链表排序。要求O(nlogn), 固定空间复杂度。
首先用快排的思想试试,结果超时了:
// Problems.cpp : Defines the entry point for the console application.
//
#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode ** listqsort(ListNode ** l)
{
ListNode *start;
ListNode *end;
ListNode *finish;
ListNode *tmp;
start = l[0]->next;
end = l[0]->next;
finish = l[1];
if ( start->next == finish)
{
return l;
}
ListNode *middle, *p;
middle = l[0]->next;
p = start->next;
//nodes before middle are less than middle, nodes behind are equal or larger
while(p->next != finish){
tmp = p->next;
if (p->val < middle->val)
{
p->next = start;
start = p;
}else{
end->next = p;
end = p;
}
p = tmp;
}
//last node
if (p->val < middle->val)
{
p->next = start;
start = p;
}else{
end->next = p;
end = p;
}
end->next = finish;
end = finish;
l[0]->next = start;
ListNode **result = (ListNode **) malloc(sizeof(ListNode*) * 2);
if(start == middle || start->next == middle){
result[0] = l[0];
}else{
ListNode **before = (ListNode **) malloc(sizeof(ListNode*) * 2);
before[0] = l[0];
before[1] = middle;
before = listqsort(before);
result[0] = before[0];
free(before);
before = NULL;
}
if(middle == end || middle->next == end){
result[1] = end;
}else{
ListNode **behind = (ListNode **) malloc(sizeof(ListNode*) * 2);
behind[0] = middle;
behind[1] = end;
behind = listqsort(behind);
result[1] = behind[1];
free(behind);
behind = NULL;
}
return result;
}
ListNode *sortList(ListNode *head)
{
if(head == NULL)return head;
ListNode ** result = (ListNode **) malloc(sizeof(ListNode*) * 2);
result[0] = new ListNode(0);
result[0]->next = head;
result[1] = NULL;
result = listqsort(result);
head = result[0]->next;
free(result);
return head;
}
int main()
{
//function start
int data[] = {1,3,3,1,3,1,3,3,2,3,2,2,1,1,1,3,2,2,1,1,2,2,2,3,3,1,1,2,2,2,1,2,1,1,2,3,3,2,2,3,2,3,2,2,2,1,1,3,2,3,3,1,1,1,2,2,1,2,2,2,2,3,1,3,1,1,1,2,1,2,2,2,1,3,2,2,2,3,3,2,3,3,1,1,2,2,1,2,1,3,2,1,3,3,1,2,1,1,1,1,1,2,1,2,2,2,2,3,3,3,1,1,3,2,1,1,2,1,3,3,2,2,1,3,1,3,1,3,2,2,3,2,3,2,2,1,2,3,1,3,1,2,3,3,2,3,3,3,1,1,2,3,1,2,3,2,1,1,2,3,1,1,3,1,2,2,3,2,1,3,1,2,1,3,2,1,1,2,2,2,1,3,1,3,2,3,3,1,1,3,1,2,1,2,3,1,2,1,1,3,1,3,3,1,1,1,2,2,1,3,1,2,2,3,2,1,3,2,1,3,2,2,3,3,2,2,1,3,2,2,2,2,2,3,2,2,3,1,3,2,1,3,2,1,2,3,3,3,1,2,2,3,1,1,2,2,3,2,1,1,1,1,1,3,2,2,2,1,3,2,1,2,3,2,1,1,2,1,3,3,1,3,1,2,2,1,2,3,2,3,3,1,2,3,2,2,3,3,2,1,3,2,2,2,3,3,3,1,1,2,1,1,2,3,3,3,1,3,2,2,1,2,2,1,2,3,1,3,2,2,3,3,3,1,2,3,2,1,3,1,1,2,2,1,1,1,2,2,3,1,3,1,2,3,3,3,2,2,3,1,1,1,3,2,1,1,3,1,2,3,3,3,2,1,2,3,2,3,2,1,3,2,2,2,2,1,1,3,1,1,1,3,2,2,2,1,2,3,2,3,2,2,1,2,3,2,1,1,3,1,3,3,1,1,1,1,1,2,3,3,3,1,3,2,2,3,1,1,3,1,1,1,3,1,1,2,2,2,1,1,1,1,2,1,3,3,3,1,2,2,2,2,3,3,1,2,2,3,1,3,1,2,1,2,2,3,3,1,3,3,2,1,3,1,1,3,1,2,3,3,3,3,1,1,3,3,3,3,2,2,2,1,1,3,2,2,2,3,1,3,3,3,1,1,3,1,3,2,3,1,2,3,2,2,3,3,3,1,2,1,2,1,2,3,1,2,2,2,1,1,1,2,2,1,2,1,1,1,3,2,1,2,3,2,2,2,1,2,3,2,2,1,3,3,3,1,2,3,3,1,1,3,3,1,1,2,1,2,3,1,2,3,2,2,3,2,1,3,1,3,1,2,2,2,2,1,2,3,3,2,2,2,3,2,2,1,2,2,3,1,3,1,1,1,2,3,3,2,2,3,3,2,3,1,1,2,2,2,3,2,2,1,1,3,2,2,3,3,3,3,1,2,3,3,1,3,3,1,2,2,1,3,2,3,3,2,3,2,1,2,1,2,2,3,3,2,3,3,1,1,2,1,3,2,2,3,1,2,1,3,1,1,3,3,3,3,2,3,3,3,1,3,2,2,2,3,3,1,2,1,2,3,2,2,2,2,3,3,1,1,3,3,2,1,3,2,2,3,2,3,2,2,2,3,1,2,1,3,2,2,1,2,2,3,2,2,2,2,2,1,1,2,1,3,3,2,2,2,1,3,3,3,3,2,3,3,2,3,3,1,3,3,1,3,2,2,2,2,2,1,2,2,3,3,3,1,2,3,1,3,2,2,2,2,3,1,1,1,3,2,3,3,2,3,1,2,1,2,2,1,2,2,3,3,1,2,3,2,2,3,3,1,1,1,2,1,2,3,3,2,2,2,2,3,1,1,1,3,3,1,1,1,3,3,3,2,3,3,1,1,1,2,3,2,2,2,2,1,2,2,3,1,3,1,2,3,1,3,3,1,2,3,2,2,3,3,1,1,2,1,2,3,3,3,2,1,2,1,2,3,1,2,2,1,2,2,2,1,2,3,3,3,3,1,2,1,3,1,1,2,1,3,1,3,2,3,2,3,3,1,2,2,2,3,3,2,1,1,3,1,2,1,3,1,2,1,2,2,2,1,3,1,1,2,2,1,2,1,2,3,3,1,1,3,1,1,1,2,2,3,1,3,3,3,3,2,2,1,3,2,3,2,2,1,3,3,2,1,2,1,2,2,3,1,2,2,1,2,2,3,1,3,3,2,3,1,1,1,3,3,3,3,3,3,1,1,1,3,3,2,2,1,1,3,2,2,2,3,3,3,1,2,2,1,1,3,3,3,2,2,2,2,3,1,2,1,2,2,3,3,3,2,2,2,1,1,1,3,1,1,1,1,1,1,1,2,3,1,3,1,1,3,1,2,1,3,2,2,3,1,2,3,3,2,3,1,1,2,2,3,3,2,2,1,2,2,1,2,2,1,2,1,3,2,1,2,3,1,1,2,3,2,2,2,3,2,3,3,1,1,1,3,3,1,1,2,1,1,1,2,3,3,2,3,3,3,1,2,3,2,2,2,2,2,2,2,1,1,2,2,1,3,1,1,2,3,1,2,3,2,1,2,2,1,3,3,2,2,1,2,1,3,1,3,2,1,1,3,2,3,1,1,2,3,1,1,1,3,2,2,3,2,3,1,2,2,3,1,3,2,1,1,3,2,2,1,3,2,1,2,3,3,1,3,3,3,1,1,2,1,1,2,3,3,2,2,3,2,1,1,2,3,1,1,3,2,3,2,1,2,3,2,1,1,1,1,3,2,3,2,3,1,3,2,1,3,1,3,3,2,2,3,2,3,1,3,2,1,2,2,2,3,3,2,1,2,3,1,1,3,1,2,2,2,3,2,3,1,1,2,1,1,3,1,3,2,1,1,1,3,1,1,3,3,3,3,1,2,3,2,3,2,1,2,1,3,1,3,1,2,2,3,2,3,2,3,3,3,3,1,1,2,2,3,1,1,3,2,1,1,2,1,2,1,1,1,1,1,1,2,3,3,3,3,2,3,1,2,3,3,1,1,3,1,1,1,2,1,1,2,2,2,2,2,1,2,2,2,2,2,2,1,3,3,1,2,2,1,2,1,1,1,1,2,2,3,2,2,2,3,1,3,1,2,2,2,3,3,3,2,1,2,1,1,3,3,2,3,1,2,1,2,2,3,2,3,3,3,3,1,1,1,1,1,1,2,3,1,1,3,1,3,2,3,1,1,1,2,1,1,2,2,2,3,2,2,2,1,3,1,1,1,1,2,3,2,3,2,2,1,3,1,2,1,2,1,2,2,3,1,2,3,3,2,1,1,3,2,3,1,3,1,1,1,2,3,2,1,3,3,1,3,3,3,3,2,2,3,3,1,3,2,2,3,3,2,3,3,3,1,1,2,2,2,2,1,3,3,1,3,2,2,3,1,2,1,1,3,1,1,2,1,1,3,1,1,3,2,2,2,2,2,3,2,1,3,3,2,1,1,2,2,3,2,1,2,1,2,1,2,1,1,1,3,2,2,2,1,3,3,2,3,2,1,1,3,3,1,3,1,3,3,3,3,3,3,3,3,3,2,3,2,2,2,2,2,2,1,1,1,2,3,1,2,2,2,3,1,2,2,1,2,2,1,1,2,3,1,2,2,2,3,3,1,1,3,2,3,2,2,3,1,2,1,1,1,2,3,3,1,1,2,1,2,3,3,2,2,3,1,3,3,3,3,1,1,3,2,2,3,2,1,3,1,3,2,1,2,1,2,1,3,2,3,1,3,2,2,3,3,3,1,2,3,3,1,1,2,1,2,1,3,2,1,1,1,2,2,2,2,2,1,2,1,3,2,1,2,2,1,1,2,3,3,1,3,2,2,3,3,2,1,3,2,1,3,3,2,2,1,3,2,1,3,2,3,2,2,1,2,1,1,3,1,1,3,3,3,3,1,2,3,3,3,3,2,3,2,3,3,3,3,1,1,2,2,1,2,2,2,3,2,1,2,1,2,3,1,1,1,3,1,2,3,2,3,2,2,2,3,1,2,3,2,1,1,1,1,1,2,3,1,3,2,2,3,3,3,2,1,2,2,1,3,2,2,1,2,3,1,3,3,1,3,3,2,2,1,1,2,3,1,1,3,3,1,3,3,3,3,2,3,1,2,2,1,1,1,1,1,3,1,3,2,3,2,1,2,2,1,2,3,2,1,1,3,2,3,2,3,3,1,2,1,2,3,3,2,3,3,2,3,2,3,3,3,1,2,3,2,1,2,3,2,2,1,3,3,3,1,2,3,3,1,2,1,1,2,1,2,1,2,2,3,3,2,1,3,1,1,1,2,2,1,3,3,1,1,2,2,3,2,3,2,3,3,1,3,1,2,3,3,1,2,2,1,1,2,1,1,3,3,2,3,3,1,2,3,3,2,2,3,1,2,3,3,3,3,1,2,3,1,2,2,1,1,3,1,2,3,3,1,2,2,1,3,2,3,2,1,2,1,3,2,3,1,1,1,2,3,1,3,2,2,2,2,2,3,1,2,2,1,2,2,3,2,2,1,3,1,2,2,2,1,2,3,1,1,3,2,3,2,3,3,2,1,3,2,1,3,2,2,3,1,1,3,3,1,2,3,2,1,3,3,3,3,1,1,3,1,3,2,2,3,3,1,3,1,1,2,1,1,3,1,1,2,3,3,1,1,3,2,2,3,3,3,3,2,2,2,2,3,2,1,3,1,2,1,3,3,1,3,3,2,2,2,3,1,3,1,2,2,2,3,1,3,3,1,3,3,2,3,1,1,2,2,2,2,3,1,1,2,3,1,1,3,1,3,1,1,3,3,2,2,1,3,2,2,2,2,3,1,1,1,2,1,1,1,2,2,3,2,1,2,1,1,2,3,2,1,1,1,2,2,3,3,1,3,1,2,2,1,2,2,1,1,1,1,2,1,1,1,1,3,2,3,1,3,3,1,3,1,2,1,1,1,2,3,3,2,1,1,3,2,3,2,3,3,2,3,3,2,2,1,3,2,2,2,3,2,1,1,3,2,1,2,2,1,1,2,1,2,3,2,1,3,2,2,2,3,1,3,2,1,3,2,1,1,1,3,1,1,1,2,2,2,2,2,3,2,3,1,3,1,3,3,2,3,3,2,3,3,3,2,2,3,3,3,1,3,2,1,1,3,2,3,3,2,2,3,1,1,1,2,3,1,3,3,3,3,1,1,3,3,3,1,1,2,1,2,3,2,1,3,1,1,3,3,3,2,3,1,2,2,2,2,1,2,3,3,3,2,1,3,2,1,3,3,3,1,2,3,3,2,1,1,3,1,1,3,1,3,2,3,1,3,2,2,3,2,3,3,2,1,2,3,1,1,1,3,3,3,3,1,2,2,1,3,2,1,3,3,1,1,2,2,1,1,1,2,1,3,2,1,2,3,2,1,1,3,2,2,3,1,1,1,2,2,2,2,3,2,1,3,3,2,3,2,3,2,3,1,1,3,2,1,2,3,1,2,2,1,3,3,2,2,1,3,3,1,3,1,1,3,2,3,2,2,1,2,2,3,2,2,1,3,1,2,1,3,2,1,3,1,3,2,3,2,2,2,1,3,1,1,2,2,3,2,1,2,1,2,3,1,1,3,1,3,2,3,1,1,1,3,1,2,1,3,1,1,2,2,1,2,1,1,2,1,3,1,2,2,2,2,2,1,2,3,2,1,3,1,2,1,2,2,2,1,1,1,2,3,1,1,3,2,3,2,2,2,2,2,2,2,1,2,2,3,3,3,2,1,1,1,3,2,2,3,2,2,1,2,2,2,3,3,3,1,3,3,2,3,1,2,3,1,3,2,1,1,2,1,1,2,1,1,3,3,2,2,3,2,1,2,3,2,1,3,1,2,3,1,3,3,3,2,1,2,2,1,1,1,3,3,2,1,1,1,3,1,2,1,2,2,3,2,3,3,3,2,3,3,1,2,3,2,1,1,1,2,3,1,2,3,1,2,3,1,3,1,3,1,2,2,1,1,3,1,1,3,1,2,3,2,1,3,3,2,2,2,2,2,3,3,2,1,1,1,2,2,3,2,3,3,2,3,1,3,2,2,2,1,2,2,2,2,3,2,1,1,2,2,3,3,2,1,2,3,2,2,3,2,3,2,3,3,1,3,3,3,2,3,1,2,3,3,2,3,1,2,2,1,1,3,3,2,3,2,1,3,2,3,3,1,3,1,2,3,1,2,2,2,3,3,2,1,3,1,3,2,2,3,2,2,2,2,2,2,2,3,3,1,3,2,3,2,1,1,2,1,2,1,1,2,2,3,3,2,1,1,1,3,3,2,1,1,3,1,3,1,3,3,2,2,2,3,1,1,2,3,3,1,2,2,2,1,3,3,1,3,3,1,2,3,3,2,3,3,2,1,3,1,2,1,3,1,1,1,3,3,2,1,1,1,2,2,3,3,2,3,3,1,3,2,3,3,3,2,2,1,2,3,2,3,3,2,2,2,1,2,3,3,3,2,3,3,1,1,3,3,1,2,1,3,3,3,1,3,3,3,2,1,3,3,1,3,2,3,1,2,1,3,3,3,3,1,3,3,1,1,3,2,3,2,1,3,1,1,2,2,1,1,3,1,3,1,3,1,2,2,2,2,3,2,1,3,3,1,2,3,2,3,2,3,1,2,2,2,2,3,1,1,1,3,2,2,3,1,2,2,3,3,2,1,2,1,3,2,1,3,2,1,3,1,1,2,1,2,3,2,3,1,1,2,3,1,1,2,2,2,2,3,2,2,1,2,1,2,1,1,1,1,1,3,1,1,3,3,3,1,3,2,3,3,1,2,1,2,2,3,1,3,3,1,3,3,3,1,1,2,2,3,2,2,3,2,1,3,3,3,3,3,2,1,2,2,3,1,1,1,1,1,3,3,2,3,3,3,2,3,2,1,2,3,2,2,1,2,2,1,2,3,3,1,3,3,2,1,1,1,2,3,2,3,1,3,2,2,3,1,1,2,1,3,2,2,2,2,1,2,2,1,1,2,1,1,2,1,1,2,2,3,2,2,2,1,2,3,2,3,2,3,2,1,2,3,3,3,1,1,2,1,3,1,2,1,1,3,3,1,1,3,2,2,1,3,2,2,2,2,1,3,2,2,2,2,2,3,2,3,2,3,3,3,1,3,3,1,1,3,1,2,2,1,1,2,3,2,3,2,1,3,1,2,3,2,3,3,3,2,1,2,1,3,2,2,1,2,3,3,1,2,2,1,3,3,3,3,1,3,3,2,2,3,2,1,3,2,2,1,3,1,3,2,1,2,3,1,3,3,1,2,2,3,1,1,3,3,1,3,3,3,1,1,1,2,3,3,2,3,3,1,2,1,2,3,3,2,2,3,3,3,3,2,2,3,3,3,1,1,1,1,1,1,2,3,2,2,1,2,1,3,1,2,3,3,1,1,3,1,2,2,1,1,1,2,1,3,3,1,1,1,3,2,1,3,2,2,3,3,2,2,1,1,3,1,2,2,2,1,2,1,2,2,1,3,3,1,2,3,3,3,1,3,3,1,3,3,2,2,2,3,2,2,3,1,3,2,1,3,2,2,1,1,1,2,2,2,1,1,3,1,3,3,2,2,1,2,2,3,3,2,2,2,2,1,1,2,3,1,3,3,2,3,2,3,1,2,2,2,2,2,3,3,2,1,2,2,3,2,3,2,2,1,1,1,2,2,3,1,3,1,2,3,2,1,3,3,1,1,2,3,3,2,1,3,1,2,2,3,1,1,1,3,2,3,1,3,1,3,2,2,3,3,3,2,3,3,3,2,3,3,2,2,1,2,1,3,3,1,1,3,3,2,2,3,2,1,2,3,1,1,2,3,2,1,2,3,1,1,3,1,3,1,3,2,2,1,2,1,2,2,1,2,3,3,1,3,2,2,1,2,2,3,3,3,1,2,1,2,2,3,1,3,1,2,1,3,1,2,1,2,2,1,2,3,3,1,3,3,1,3,2,1,2,3,3,3,3,3,1,2,1,2,2,3,1,2,3,1,3,3,1,1,2,1,1,1,3,2,1,3,3,1,3,2,1,2,1,1,1,1,2,1,3,1,2,1,1,3,2,1,1,2,3,1,1,3,3,3,1,1,2,2,3,1,2,1,3,2,3,3,3,3,1,1,3,3,3,1,2,3,3,3,3,3,1,3,2,2,1,3,1,3,1,3,2,1,1,1,1,1,3,1,1,2,1,2,2,2,3,3,2,3,2,3,2,3,3,1,2,2,3,2,2,1,3,3,3,2,3,1,3,3,2,2,1,2,3,2,3,3,2,1,1,3,1,2,2,2,1,2,1,1,2,2,2,1,2,1,3,1,3,3,1,2,2,3,1,3,1,2,1,2,1,3,3,1,3,2,3,2,1,1,3,2,1,1,2,2,2,1,3,3,3,1,3,3,2,3,3,1,2,3,2,3,2,2,1,2,2,3,1,3,2,3,1,2,2,1,3,3,3,2,2,3,2,2,2,1,3,3,1,1,1,2,3,1,2,3,1,1,1,1,3,3,1,1,3,1,1,3,1,1,1,2,2,1,1,1,1,2,1,1,2,3,1,2,1,2,2,2,3,2,1,1,1,1,2,2,3,2,3,1,1,3,3,2,2,1,2,1,1,1,2,2,2,2,3,2,3,3,2,2,1,1,3,1,3,2,1,2,2,2,3,1,2,1,3,1,3,3,3,1,2,1,1,2,3,2,3,2,3,3,1,3,3,3,2,2,3,3,3,3,3,3,3,2,1,1,3,1,1,3,2,1,2,3,2,3,2,3,3,1,2,3,2,3,2,1,2,3,3,2,3,1,2,1,2,1,2,1,2,3,2,2,2,3,1,2,3,3,1,1,1,3,2,2,3,1,3,2,3,1,2,1,1,2,3,3,3,1,1,1,3,2,1,2,1,2,3,3,3,3,1,1,1,3,2,2,2,3,1,2,1,2,3,1,2,1,2,1,3,1,1,1,2,1,1,3,2,2,3,1,3,1,1,3,3,1,3,1,3,2,2,3,1,2,3,3,3,3,2,2,1,1,3,2,1,3,1,1,2,3,2,2,2,2,3,1,2,2,1,1,2,2,2,1,1,2,3,1,2,2,1,2,3,3,2,1,2,2,1,3,2,1,3,2,1,3,2,3,2,3,1,2,2,2,1,2,3,1,2,2,1,1,1,3,2,3,2,3,3,1,3,3,3,1,3,1,1,1,2,1,3,2,3,1,1,1,1,2,2,3,3,1,1,3,1,3,2,1,2,2,2,1,2,3,1,1,2,3,2,3,3,1,3,2,1,2,2,3,3,1,3,2,2,2,1,1,2,2,2,3,1,3,2,1,3,3,2,3,3,3,2,2,3,2,1,3,2,2,2,3,2,1,2,2,3,2,2,2,3,2,3,1,2,1,1,1,3,1,2,2,2,1,3,1,2,3,1,2,1,1,1,1,3,3,2,2,1,3,2,2,2,3,1,3,3,2,2,2,3,2,3,1,2,2,2,3,2,3,2,2,3,2,3,1,3,1,2,2,3,2,1,1,1,2,3,1,2,3,1,3,1,1,3,1,2,1,1,3,1,2,3,2,1,3,3,3,1,1,2,3,3,1,2,1,2,3,3,3,1,1,2,1,3,2,3,3,3,3,2,3,3,1,1,2,2,3,1,3,2,3,1,2,3,3,2,2,1,2,3,2,1,2,2,2,2,3,2,2,2,1,2,3,3,1,1,2,3,2,2,3,3,3,1,3,2,2,2,1,1,3,2,1,1,1,3,2,1,2,1,2,2,1,2,3,1,2,2,1,1,3,1,2,3,3,3,1,1,3,1,3,3,1,3,2,2,3,1,3,3,3,3,3,3,1,3,2,1,2,3,2,2,2,2,3,3,1,2,3,1,3,3,3,2,2,3,1,3,1,2,2,1,1,2,1,2,1,3,3,2,1,3,1,1,2,1,2,3,1,2,2,2,3,3,3,1,1,1,1,3,2,1,2,2,3,1,3,3,2,2,2,2,1,2,3,1,3,3,2,2,3,1,2,3,2,3,2,1,2,3,2,3,3,1,3,1,2,3,2,3,3,1,1,3,3,3,1,3,1,2,2,3,1,3,1,1,3,1,1,3,3,3,2,2,1,1,3,2,1,2,3,2,3,3,2,1,2,2,1,3,3,2,3,2,3,2,2,3,2,1,1,2,2,1,3,3,3,3,2,3,1,3,1,1,1,3,3,2,1,3,1,3,2,1,3,2,1,3,3,1,3,1,3,3,1,2,2,2,3,1,3,2,2,1,2,1,3,2,2,2,1,2,3,3,3,1,1,2,3,3,1,3,1,2,3,1,1,1,3,1,3,2,3,2,3,1,3,3,1,2,2,1,1,2,1,2,3,3,1,2,2,1,2,2,1,1,1,1,2,2,1,2,3,3,2,1,3,2,1,2,1,1,1,1,2,1,2,3,1,2,3,2,1,3,2,1,3,3,3,1,3,1,2,2,3,1,3,2,1,1,1,2,2,2,3,2,2,3,3,2,2,2,1,2,2,2,1,3,3,2,1,3,2,3,2,2,1,3,1,3,2,3,1,3,3,1,1,3,3,3,1,2,3,1,2,3,1,3,1,2,2,3,1,3,3,3,2,3,3,3,2,3,2,3,1,3,2,3,3,3,3,2,1,1,1,1,2,2,1,1,3,2,3,2,3,3,2,3,3,2,2,3,2,3,3,1,3,3,2,2,2,3,3,1,1,2,1,1,3,3,3,2,3,3,1,1,2,3,2,2,2,2,1,1,1,3,3,1,3,2,1,1,1,1,3,3,1,3,1,2,2,3,2,1,1,2,1,3,2,3,2,1,3,3,3,2,3,2,3,3,2,2,3,1,3,2,2,2,3,3,1,1,2,2,3,1,2,2,2,3,3,3,1,2,3,3,1,3,2,2,1,2,1,2,3,1,3,3,1,2,2,2,2,2,1,3,2,2,3,2,1,1,1,3,3,2,1,1,2,2,3,3,3,1,2,1,3,2,2,1,3,1,2,3,1,3,1,2,1,3,3,1,2,2,3,2,1,1,1,2,3,3,3,3,1,1,1,2,2,2,2,1,1,1,3,2,3,2,2,3,2,1,1,1,2,2,3,2,2,3,3,2,3,2,1,1,1,3,1,1,1,2,1,2,1,1,3,2,2,1,2,2,3,3,1,3,1,3,2,1,2,3,1,1,1,3,2,1,2,2,1,1,1,1,2,1,3,3,1,1,1,1,2,2,1,1,1,2,1,3,2,2,3,1,1,1,1,2,3,2,2,1,2,3,1,1,2,3,3,1,1,3,3,2,1,2,3,2,3,3,2,3,3,1,1,2,1,2,2,3,2,3,2,3,1,1,2,2,1,1,1,1,2,3,1,2,2,1,2,1,3,3,3,3,2,3,3,2,1,2,1,2,3,2,1,2,2,3,1,1,2,2,2,3,3,2,3,1,3,2,2,2,1,1,2,1,2,1,1,1,1,2,2,1,1,1,2,1,3,2,2,1,1,2,1,1,1,2,2,2,2,3,3,2,1,1,3,3,2,3,2,2,1,3,1,1,2,1,1,3,3,2,2,1,2,2,1,1,3,2,3,1,2,2,1,3,3,2,1,1,2,2,2,2,2,1,3,1,3,3,3,3,1,3,2,3,2,3,1,3,1,3,2,2,3,1,1,1,1,3,2,2,2,1,3,1,2,1,3,2,3,1,2,2,3,3,2,2,1,3,1,3,3,3,3,2,3,1,2,1,3,3,3,2,1,3,2,2,3,1,1,2,3,3,1,1,2,2,3,3,3,3,3,3,2,3,1,3,1,1,1,2,1,3,1,3,1,1,3,1,3,1,1,2,1,2,2,3,1,2,1,3,1,2,3,2,2,2,2,2,3,1,1,2,2,3,3,1,1,2,2,3,3,3,1,3,2,3,1,3,1,3,1,3,1,1,3,3,3,1,1,3,3,3,2,2,1,2,2,3,1,2,2,3,3,1,2,1,2,3,3,1,2,2,3,2,2,2,1,1,2,2,2,2,3,3,1,2,2,2,1,2,1,1,3,1,1,1,1,2,2,2,1,1,1,2,3,1,2,3,1,3,3,3,2,1,1,1,1,2,3,3,1,3,1,1,2,2,2,3,2,2,2,3,1,1,1,3,2,2,1,2,3,1,2,1,3,3,3,1,1,3,3,1,1,3,3,1,2,3,1,3,2,2,2,2,3,3,2,3,3,2,2,3,2,2,1,3,1,1,1,3,3,2,2,1,1,1,3,2,1,3,1,3,2,3,2,1,3,3,3,2,2,3,2,2,1,3,1,1,3,2,2,3,2,1,3,3,1,1,3,1,3,1,1,3,1,2,1,2,3,1,3,3,3,3,2,2,3,3,3,3,2,3,1,1,3,1,1,3,3,1,3,3,3,3,1,1,2,2,1,3,3,2,2,3,3,3,3,1,1,1,2,2,3,2,3,1,1,2,3,1,3,3,2,2,2,1,3,1,1,3,3,1,1,2,2,2,3,1,3,2,2,2,3,1,1,3,3,2,2,1,2,1,2,2,1,3,1,3,1,3,2,1,3,3,3,3,2,2,2,3,3,2,2,1,1,2,3,2,1,3,3,1,2,1,2,3,1,1,2,3,3,1,3,2,2,1,3,3,1,1,1,2,1,2,2,1,1,1,2,2,3,1,2,1,3,2,3,1,1,3,1,2,1,3,3,2,2,1,1,1,3,1,2,2,2,3,2,3,2,2,3,1,2,2,1,1,3,3,3,1,3,1,2,2,2,3,1,3,2,1,1,1,3,1,3,2,3,3,3,1,1,2,2,2,3,2,2,2,2,1,1,2,1,1,2,2,2,1,1,1,2,1,3,3,1,3,2,1,2,2,1,2,3,1,1,2,2,3,3,2,2,1,3,3,1,3,2,2,3,2,1,1,3,2,3,1,1,2,3,2,2,2,1,2,2,3,3,2,2,1,1,2,1,1,1,2,1,1,2,3,2,2,2,3,2,2,2,2,2,1,3,1,3,3,3,3,2,3,3,3,2,1,1,1,3,2,3,3,1,1,1,3,1,3,3,2,1,1,2,3,2,3,2,3,2,1,3,3,1,1,2,2,2,1,1,2,3,2,1,1,3,1,3,1,1,3,2,3,2,3,1,1,3,1,3,3,2,3,2,3,1,1,3,1,3,2,3,1,3,2,1,2,1,1,2,2,3,2,1,2,1,1,2,1,2,1,1,2,3,3,3,3,2,2,3,3,2,1,1,1,3,3,3,2,1,2,2,1,2,2,1,3,2,1,2,1,1,1,3,1,2,1,3,3,3,2,3,1,3,2,1,1,2,3,1,3,2,3,3,1,2,1,3,3,1,1,1,2,2,3,2,1,3,2,2,1,2,2,1,3,3,1,2,2,3,3,2,2,1,3,3,2,2,1,1,3,2,3,2,2,1,2,1,3,3,2,1,3,2,3,3,1,3,2,2,3,2,3,3,2,3,1,2,3,3,1,2,1,1,2,3,3,2,2,2,3,1,2,1,3,2,1,3,3,2,1,1,3,3,1,3,3,1,2,1,2,2,3,2,3,2,1,1,3,1,3,3,1,2,2,2,3,2,3,2,3,3,1,2,3,3,2,2,3,1,1,2,3,1,2,3,2,1,1,2,1,1,1,3,3,3,3,1,2,2,2,3,3,2,1,3,1,1,2,3,3,3,3,1,3,2,2,1,2,3,3,3,3,1,3,3,3,1,2,1,2,1,1,1,3,3,1,1,1,2,2,1,3,3,2,3,1,3,2,1,2,1,1,1,1,1,1,2,3,2,1,3,3,2,2,1,1,3,2,1,1,3,2,1,2,1,2,3,1,2,2,3,3,2,3,3,1,2,2,1,3,1,2,3,3,3,2,2,2,3,3,2,2,3,3,2,1,3,3,3,1,3,1,2,3,2,1,2,1,2,2,3,1,2,3,2,3,3,3,1,3,3,3,1,2,3,2,3,3,2,1,2,1,3,1,3,3,2,3,3,2,1,3,3,1,1,3,1,2,3,3,2,3,3,1,2,1,2,1,3,3,3,1,3,3,2,1,2,1,1,1,2,3,1,1,2,3,3,1,1,1,3,2,1,1,1,2,1,2,3,2,2,1,1,3,3,1,3,3,3,1,2,2,2,1,1,1,2,1,1,2,1,1,2,1,1,1,3,3,3,1,3,1,2,2,2,2,1,2,2,1,1,3,3,1,2,2,1,1,3,1,1,3,1,2,2,3,1,3,1,2,3,2,1,3,3,3,1,2,2,1,2,1,1,3,2,1,1,1,3,1,2,1,2,2,3,1,1,3,3,3,3,3,3,1,3,3,2,1,3,2,2,2,1,3,2,1,3,3,2,2,2,1,1,3,1,3,1,2,2,3,2,2,3,3,1,3,3,2,1,3,1,3,3,1,3,2,2,3,3,1,3,3,3,3,3,1,2,3,3,3,3,3,3,1,3,1,3,1,3,2,1,2,1,1,1,1,3,3,2,3,2,3,2,2,2,1,3,2,3,2,2,3,3,2,1,2,2,2,3,2,1,3,1,3,1,2,1,2,3,2,3,1,1,3,1,1,1,1,1,1,2,3,1,2,3,2,2,2,1,3,1,1,1,1,2,1,2,3,2,2,2,1,2,3,1,1,1,3,2,1,1,3,2,1,2,1,2,2,3,3,1,3,1,3,1,1,1,3,2,2,3,2,2,2,3,2,2,3,3,3,1,2,2,2,3,1,3,3,3,3,1,1,1,2,1,2,2,1,3,2,2,2,2,1,2,3,3,1,1,1,1,1,3,3,3,3,1,1,1,3,3,2,3,2,1,2,2,3,2,2,3,1,2,3,1,3,1,3,2,3,1,3,1,1,2,2,1,2,3,3,3,2,3,3,2,2,3,1,2,3,2,2,3,3,3,1,2,1,1,2,3,1,3,1,3,3,1,1,2,2,3,3,2,2,1,2,1,1,3,2,2,1,1,2,3,2,2,1,1,3,2,3,3,3,2,3,1,1,1,2,1,2,3,2,3,2,3,1,2,3,2,3,1,1,2,2,3,1,1,2,1,3,3,1,3,2,2,2,3,1,1,1,1,1,2,2,2,3,2,1,2,2,2,1,2,1,3,1,3,1,3,2,1,2,3,1,3,1,2,3,2,3,1,2,3,2,1,2,2,3,3,3,1,3,3,3,2,2,3,1,3,1,2,3,2,3,2,3,3,2,3,3,2,2,2,1,1,2,2,2,3,3,1,2,1,1,3,1,1,2,1,2,1,3,2,1,1,2,2,1,3,1,3,2,1,1,3,1,2,3,3,2,3,3,1,1,3,3,1,1,1,2,1,2,1,2,2,1,3,2,1,2,2,1,1,2,2,2,2,3,1,3,1,2,3,1,2,1,2,3,3,1,1,3,1,1,2,1,3,3,1,1,1,1,3,2,2,3,2,2,1,2,1,1,3,1,1,1,1,1,1,2,3,3,1,3,2,2,2,3,2,2,3,3,3,2,2,3,2,3,2,2,1,3,3,3,3,3,3,3,1,1,3,1,2,2,1,2,2,1,2,2,3,3,3,2,1,3,2,1,3,3,1,3,2,3,3,3,2,1,1,3,3,3,2,2,3,1,3,1,3,3,1,3,3,3,3,2,1,1,1,2,3,3,2,2,2,2,3,2,2,3,1,1,3,2,2,2,1,2,2,2,1,3,1,2,1,1,1,1,3,2,3,3,2,1,3,1,2,3,3,2,3,1,3,2,3,1,1,1,3,3,1,2,1,1,2,1,3,1,3,3,1,1,1,2,2,2,2,1,3,2,3,3,3,2,3,1,3,2,2,1,1,3,1,3,2,2,1,3,1,3,3,1,2,2,2,1,1,2,2,3,2,2,2,2,1,3,1,1,3,3,1,1,1,1,2,3,1,2,3,1,1,2,2,1,2,1,3,3,2,2,2,2,2,3,2,2,3,2,2,2,3,1,2,2,2,1,1,1,1,3,3,1,1,3,3,2,2,2,3,3,3,1,3,3,2,1,1,2,3,2,1,3,1,1,2,1,2,1,1,2,3,1,1,1,1,3,3,1,2,1,2,1,1,2,3,1,1,1,1,2,1,3,1,3,2,2,3,1,1,3,3,1,1,1,2,2,3,1,2,1,1,2,3,2,3,1,1,3,1,3,3,1,1,1,3,3,3,3,1,3,2,2,1,1,2,1,2,2,3,1,3,1,1,1,3,2,3,2,1,1,3,1,2,2,3,3,3,3,2,3,1,2,2,3,2,3,2,1,3,1,2,2,3,2,3,3,3,3,3,1,3,2,1,3,2,3,1,1,2,1,3,2,1,1,1,1,1,3,1,1,2,2,2,3,3,2,2,1,1,1,1,3,1,3,3,3,2,3,1,2,1,1,3,3,3,2,1,3,2,2,2,2,1,2,2,1,3,1,2,3,2,1,3,1,3,3,1,1,3,2,1,1,3,2,3,2,3,2,3,1,2,2,1,2,2,2,3,1,2,2,3,3,2,3,3,2,3,2,3,2,3,3,1,3,1,1,1,3,3,3,2,2,2,1,2,1,3,1,2,1,3,2,2,3,1,1,3,1,1,2,3,2,3,2,3,1,2,1,2,1,3,1,3,2,1,2,3,3,2,2,1,1,3,3,3,1,3,2,2,2,2,1,2,2,3,2,1,1,3,2,1,2,3,2,1,3,1,3,3,2,1,1,3,3,1,3,3,3,1,2,1,2,2,3,2,1,3,1,2,2,3,1,1,3,3,1,3,1,3,3,1,1,1,3,3,1,1,2,3,3,2,1,1,3,3,1,1,1,2,2,1,3,1,3,3,3,2,2,2,2,3,1,1,3,1,3,1,3,2,3,3,2,2,1,1,1,2,3,2,3,2,3,2,2,2,1,3,3,2,3,1,2,3,3,3,3,1,1,1,3,2,1,3,2,2,3,3,2,1,1,2,1,1,2,3,1,2,1,2,3,1,2,3,3,1,2,2,1,1,2,3,3,3,3,3,1,2,2,2,2,1,1,2,3,2,2,1,3,2,3,1,3,3,2,3,3,2,3,2,3,2,3,3,1,2,1,3,3,3,3,1,2,1,3,2,1,3,2,1,1,3,2,3,1,3,1,2,2,1,3,1,3,2,2,3,2,3,1,2,1,2,1,1,3,2,3,3,1,2,2,2,1,1,1,1,1,3,2,2,1,2,2,2,3,3,2,1,3,1,2,2,3,2,1,3,2,1,1,2,2,1,3,3,1,2,2,2,2,1,2,3,2,2,2,3,3,1,2,1,1,3,3,2,2,2,3,3,2,1,3,2,2,3,3,3,3,3,1,1,3,2,1,2,1,2,2,1,3,3,1,3,2,1,1,3,2,3,3,3,2,2,3,1,1,3,1,3,3,1,3,2,3,1,2,1,3,2,3,3,3,3,1,1,1,1,3,1,3,1,3,1,2,2,3,3,2,2,1,3,1,3,1,3,1,1,2,3,2,3,2,2,1,2,3,2,1,2,3,3,3,3,2,2,2,1,3,2,1,1,1,3,2,2,2,1,1,1,2,2,1,1,1,1,1,1,2,3,2,2,1,3,3,1,3,3,3,1,3,3,1,3,3,3,3,1,2,2,3,1,3,1,3,1,2,3,1,2,2,2,2,3,1,3,2,1,3,2,1,1,1,3,3,3,3,2,3,3,3,1,1,2,1,2,1,3,3,1,3,3,1,2,3,3,2,1,1,2,2,3,3,3,1,1,1,1,1,3,3,3,1,2,3,1,2,1,2,3,2,1,3,2,3,1,1,2,2,1,1,3,2,2,1,1,1,3,3,2,2,1,3,2,1,2,3,2,3,2,1,3,1,3,3,3,3,2,2,3,1,2,3,2,2,2,1,2,1,2,2,2,3,1,2,2,2,2,2,1,2,2,2,2,1,3,3,1,2,2,1,2,2,2,3,3,3,2,2,1,3,3,3,3,1,3,2,3,3,2,2,3,1,1,1,2,2,2,3,3,3,2,2,1,3,2,1,2,3,2,1,3,1,3,2,2,1,1,1,3,1,2,1,2,2,3,3,2,3,3,3,3,2,1,1,1,1,1,2,1,1,3,3,2,3,3,3,3,1,1,3,3,2,3,3,2,1,1,1,2,3,2,2,2,2,2,2,1,1,3,3,1,3,3,2,1,1,3,1,3,1,3,2,2,2,3,2,2,3,3,1,1,2,1,1,2,1,3,2,3,1,3,2,1,1,2,1,3,3,1,1,1,2,3,2,3,2,3,3,2,2,3,3,2,1,3,2,2,2,2,1,2,2,2,2,2,2,3,2,1,2,1,2,3,3,2,2,2,3,1,3,1,3,2,2,1,3,2,3,2,2,2,1,2,2,1,3,3,3,3,3,2,3,2,1,1,3,1,1,1,3,3,1,3,3,3,3,2,2,3,1,2,3,3,2,2,1,2,3,3,1,1,2,2,1,2,1,1,1,2,2,3,1,1,3,1,1,2,2,3,2,1,1,2,2,2,3,2,2,2,3,1,3,2,1,1,2,2,1,1,1,1,1,1,1,3,3,3,2,1,1,1,2,2,2,3,2,2,3,1,2,1,3,3,2,3,1,1,3,3,3,1,2,3,2,1,1,3,3,2,3,3,1,2,2,1,2,1,1,2,1,1,2,2,3,1,1,2,2,1,1,1,3,1,2,3,2,2,2,1,1,1,3,2,3,3,1,2,2,2,3,1,3,2,2,3,2,1,2,3,2,3,2,3,2,1,1,3,3,1,1,2,3,3,2,2,3,3,2,2,2,1,3,3,3,3,1,2,1,2,3,3,2,3,1,1,2,3,1,3,1,1,3,1,1,3,2,3,3,2,3,3,1,1,1,1,1,2,1,1,2,2,2,2,2,1,1,3,2,1,3,2,1,2,2,2,3,3,2,2,2,1,1,3,1,1,2,3,2,2,3,2,1,2,1,3,1,1,1,2,1,1,3,1,1,1,2,2,2,3,2,1,2,3,1,2,3,1,2,1,2,2,2,1,1,3,1,3,3,3,1,3,3,2,3,3,3,1,3,3,1,1,2,1,1,3,1,2,3,1,3,3,1,1,2,2,2,1,2,2,2,2,2,3,1,2,3,3,1,1,2,1,1,1,2,2,1,1,1,3,1,2,2,1,1,3,2,1,1,2,2,3,1,3,1,2,3,1,3,3,2,3,3,1,3,2,3,1,3,2,3,2,1,1,1,1,3,1,1,3,3,1,1,2,2,2,3,3,1,3,2,1,2,3,1,3,3,2,3,2,1,2,1,1,1,3,3,2,1,1,2,1,1,2,2,3,3,2,1,2,2,3,3,1,1,1,3,2,1,2,2,2,2,3,2,2,3,2,3,3,1,2,2,1,3,3,1,1,2,2,1,3,2,2,1,1,1,1,2,1,1,1,3,3,2,3,1,2,1,1,2,1,1,1,2,2,1,3,1,2,2,2,1,1,1,1,3,1,2,2,3,1,1,2,1,2,2,1,2,2,2,2,2,2,3,2,1,2,1,1,2,2,1,3,3,3,2,1,1,3,2,2,1,2,1,2,1,2,3,1,2,3,2,1,3,2,1,2,3,2,3,2,1,1,3,1,1,1,2,1,1,3,1,3,1,3,2,3,2,2,2,2,1,2,1,1,1,3,3,3,3,3,1,2,3,1,2,3,3,2,1,3,3,3,3,3,2,3,3,3,2,2,1,3,1,1,2,2,3,1,1,2,3,1,3,1,2,1,1,2,2,3,2,3,1,3,2,1,1,2,1,2,3,2,2,1,2,3,3,1,1,2,2,3,3,3,3,1,2,1,3,1,2,3,2,3,2,3,3,3,2,1,1,3,1,2,2,2,1,2,1,3,2,2,3,2,1,2,2,2,2,3,3,2,3,2,2,1,1,2,1,2,2,2,3,3,3,3,1,1,2,1,3,1,2,1,3,2,3,2,1,1,3,2,1,1,1,2,1,3,3,1,2,3,1,2,2,3,2,2,1,3,1,2,3,2,3,3,3,1,1,3,1,3,2,1,1,2,1,1,2,1,1,1,1,2,3,2,3,2,2,1,1,1,1,2,1,1,3,1,3,1,1,2,1,3,3,3,2,3,2,2,1,3,2,1,1,3,2,1,3,1,1,2,3,1,3,1,2,2,3,3,1,3,3,2,1,3,3,1,1,3,1,2,2,3,1,2,2,3,3,2,1,2,2,1,1,2,2,2,3,3,1,1,2,1,3,3,3,1,2,1,2,1,3,1,1,1,1,1,2,1,2,3,3,3,1,2,3,1,1,2,2,2,1,3,2,2,3,3,1,2,2,2,3,1,1,2,2,2,1,2,1,1,2,2,2,1,3,1,1,3,1,3,2,1,1,1,1,1,3,3,2,1,1,1,1,2,1,3,3,1,2,1,3,1,1,2,2,3,2,2,2,1,1,1,3,2,3,2,1,3,1,3,3,2,2,2,2,1,1,3,1,1,2,2,1,2,1,1,3,1,2,1,3,3,1,2,1,1,1,3,3,2,3,1,2,1,3,2,1,2,3,2,3,1,1,2,1,2,1,1,2,2,3,2,3,3,3,1,3,2,3,1,3,2,2,3,2,2,1,3,2,3,2,2,1,1,1,1,1,3,3,1,2,1,2,1,3,2,2,2,1,1,1,2,1,2,2,1,3,3,3,3,2,1,3,3,1,2,2,3,1,1,2,2,3,1,1,1,1,1,2,3,3,2,3,3,2,2,3,1,3,2,2,2,1,1,2,2,3,2,2,2,3,3,2,2,2,2,2,3,1,1,2,3,2,3,2,2,1,3,1,3,2,2,2,3,1,2,3,2,3,1,2,3,2,2,1,3,2,2,3,3,1,2,3,1,2,3,3,2,2,3,1,2,3,3,3,1,1,1,3,3,1,2,1,1,3,3,2,3,3,1,2,2,2,1,3,1,3,3,3,3,2,1,2,2,2,2,1,1,2,3,1,1,2,1,1,1,2,1,3,1,1,1,1,1,2,2,3,2,3,3,2,2,3,3,3,2,3,1,1,1,1,1,2,1,1,2,1,3,3,1,3,2,2,1,3,2,2,3,2,3,2,2,1,1,3,2,2,3,1,1,3,2,2,2,3,1,3,3,1,2,2,3,2,2,1,3,2,1,1,2,3,1,3,1,2,2,1,1,2,3,3,1,1,2,3,2,3,1,1,1,2,2,3,3,2,3,2,2,1,1,3,3,3,2,1,1,2,1,1,2,2,2,1,3,2,3,3,2,2,3,3,1,3,2,1,3,2,1,1,2,1,3,2,2,2,1,3,3,3,3,2,1,2,3,3,3,2,3,3,1,2,1,2,2,2,3,1,2,3,1,2,3,1,2,2,1,1,1,2,2,1,1,3,1,2,2,2,3,3,1,3,3,2,2,1,2,3,1,1,2,2,2,3,3,2,2,2,1,2,2,2,1,3,1,1,3,3,2,1,1,3,2,1,2,3,3,3,2,3,2,1,1,2,1,3,3,2,2,2,3,3,3,3,1,3,2,1,1,3,1,2,3,1,1,1,2,3,3,3,3,1,1,3,3,3,3,1,1,1,3,3,2,3,3,3,2,1,2,3,3,2,2,2,1,2,1,1,1,1,3,3,2,3,1,3,2,2,2,3,1,2,1,2,2,2,3,1,3,1,1,1,1,1,2,2,1,1,2,1,2,2,2,2,1,1,3,1,3,1,3,1,1,1,2,2,2,2,2,1,3,1,2,1,3,2,2,1,2,3,2,2,1,3,1,3,1,1,1,2,2,3,2,3,1,3,3,1,2,1,2,3,3,2,2,3,1,3,2,3,1,3,1,3,1,2,3,2,2,1,2,2,2,3,1,2,3,3,3,2,2,2,2,2,2,3,1,2,3,1,3,2,2,1,3,3,2,3,3,2,1,3,1,2,2,3,1,3,3,3,3,2,1,3,2,3,3,3,2,3,2,3,3,1,1,1,1,3,3,2,2,3,1,2,2,1,1,3,3,3,3,2,3,2,3,3,1,2,3,2,2,3,1,3,2,3,2,3,3,2,3,1,3,1,1,3,2,3,2,3,2,1,1,3,3,3,2,2,3,2,3,3,1,3,2,1,1,3,3,1,3,3,1,3,1,3,3,2,3,3,2,2,1,2,1,1,2,1,2,2,1,2,2,1,1,1,2,1,1,2,2,1,3,1,1,1,3,3,3,2,3,1,2,3,1,3,1,3,1,3,2,1,1,3,2,3,2,1,2,1,2,2,3,1,3,3,2,2,2,3,2,2,2,1,3,2,1,1,3,3,3,2,3,1,1,1,2,2,3,2,2,3,2,1,3,1,3,3,1,1,2,1,3,3,2,2,3,2,3,2,2,1,2,1,2,2,2,3,1,3,2,1,1,3,3,1,2,1,2,3,3,1,2,1,2,1,2,3,2,3,2,2,2,1,2,1,2,2,3,2,1,3,2,1,3,3,1,2,2,3,1,2,1,1,2,2,1,1,2,3,3,3,3,1,1,1,3,1,3,3,3,1,3,2,3,1,3,1,1,1,3,2,2,2,3,2,3,3,2,1,1,2,3,1,3,1,3,3,2,1,2,3,1,3,1,2,3,3,1,2,2,2,3,2,3,2,3,1,2,2,2,2,3,1,2,2,1,3,2,3,3,1,3,1,2,2,1,2,1,1,1,2,1,1,3,1,3,3,2,3,3,1,3,1,2,3,3,3,1,2,2,1,2,1,2,3,2,3,2,1,2,1,1,3,3,2,1,1,2,3,3,1,1,3,2,2,3,1,2,3,2,2,1,2,3,1,1,1,2,2,3,2,3,3,3,2,1,1,3,1,3,2,3,1,3,3,1,2,1,1,2,3,3,2,1,2,3,2,2,1,1,1,3,3,3,3,2,1,3,3,1,1,2,2,1,1,3,1,2,3,2,1,3,3,3,1,1,2,2,3,3,3,3,1,2,2,2,2,1,1,3,1,2,1,2,2,2,3,3,1,3,2,1,2,1,2,1,1,1,3,3,2,3,3,3,3,1,3,1,3,2,3,1,3,3,1,3,2,3,1,1,3,3,1,2,3,2,1,1,1,3,3,2,3,1,3,1,1,3,3,2,2,1,2,2,3,2,3,3,3,2,1,1,2,3,3,1,2,1,3,2,3,1,3,1,2,2,2,2,1,1,2,1,1,3,2,3,1,2,1,3,3,1,1,2,2,2,2,1,3,2,2,3,3,3,3,1,3,1,1,2,2,1,1,1,3,3,1,3,1,3,1,1,1,2,3,2,3,3,2,3,3,2,2,2,3,2,1,3,1,2,3,1,1,3,3,2,2,3,2,3,2,2,2,1,2,2,2,2,2,1,3,2,1,2,1,2,3,2,1,1,3,1,1,2,2,2,3,2,1,1,3,2,2,2,2,3,2,2,3,2,3,1,3,2,1,3,1,2,2,3,2,1,3,1,2,1,1,1,3,3,3,1,2,1,3,3,2,3,1,3,3,1,1,1,3,2,3,3,3,1,2,1,1,1,2,3,2,2,2,3,1,1,2,3,2,1,1,1,2,1,1,3,1,3,2,3,2,1,2,3,2,1,1,3,1,3,3,2,2,2,3,1,3,2,2,3,3,3,2,3,2,2,3,3,2,3,3,3,2,3,1,1,2,2,3,3,2,2,3,2,3,2,2,1,2,1,2,1,2,1,3,1,2,1,1,2,2,3,2,1,2,2,3,3,1,2,3,2,2,3,2,1,1,2,1,3,1,2,3,1,1,3,3,3,3,1,3,3,2,2,2,1,2,3,3,1,3,3,1,1,3,1,2,1,3,3,2,1,2,1,1,2,1,2,3,1,3,2,1,2,2,1,2,3,1,1,3,1,3,3,2,1,2,3,1,3,2,3,3,2,3,1,1,3,3,1,3,2,1,1,2,3,3,3,3,2,3,1,2,2,2,2,2,2,2,2,1,2,2,2,2,3,3,3,3,2,2,1,2,1,1,3,1,2,1,2,1,2,1,2,1,2,3,3,1,3,2,3,2,1,1,2,3,2,1,2,2,1,2,1,1,3,3,2,1,1,2,3,3,2,2,3,2,1,3,3,1,2,1,3,3,3,2,1,3,1,1,2,2,3,2,1,1,2,2,2,1,2,1,3,3,2,2,2,2,2,3,1,2,1,1,1,1,1,3,3,3,1,3,3,3,1,3,2,3,3,2,1,1,2,3,1,1,2,1,3,2,2,2,1,1,2,2,2,2,1,3,2,3,2,3,3,3,2,3,3,3,2,3,3,2,2,1,1,3,1,1,2,3,2,3,1,1,3,1,3,1,3,2,3,1,2,3,3,3,3,1,3,2,1,1,1,1,1,2,1,2,3,3,2,2,3,3,1,3,1,3,3,1,3,1,2,2,3,3,3,2,1,3,2,1,1,3,3,3,3,3,1,2,1,1,2,3,1,3,3,2,1,3,1,2,1,3,3,3,3,3,2,1,2,1,2,2,1,3,3,2,1,2,3,2,2,1,1,1,1,2,1,3,2,3,2,3,3,3,1,1,3,1,2,1,2,1,2,2,3,1,2,2,1,3,2,1,1,1,1,1,1,2,3,2,2,2,3,3,2,1,1,3,3,3,3,1,1,1,1,2,2,1,1,3,2,2,2,3,2,2,3,2,1,3,1,3,3,1,3,3,3,3,1,3,3,3,1,1,1,1,1,1,1,3,2,3,1,2,2,3,3,1,3,3,2,2,3,2,1,3,2,2,2,1,2,2,2,3,3,3,1,2,1,1,1,2,2,1,1,2,1,1,2,2,3,2,2,3,3,1,1,1,3,3,2,2,3,3,3,2,1,3,1,1,3,3,2,2,2,1,3,3,1,3,1,1,3,3,2,3,2,1,2,2,1,3,3,1,1,2,1,2,2,3,3,1,3,3,3,1,1,2,2,3,1,1,3,3,2,2,2,1,3,2,1,3,2,1,3,1,2,3,2,2,2,1,3,3,2,3,1,1,2,3,3,2,3,2,2,3,3,3,2,2,1,2,1,1,3,1,2,3,1,1,1,2,2,3,2,1,3,3,3,2,2,3,3,2,3,3,3,3,1,1,2,1,2,1,2,2,1,2,3,1,1,1,3,2,1,2,2,1,3,3,2,2,3,1,2,3,3,3,3,3,1,3,2,3,3,3,3,2,3,3,1,2,3,1,3,1,3,3,1,2,1,1,2,3,2,1,2,3,2,3,1,2,3,3,1,2,3,3,2,1,1,2,2,3,1,2,1,1,3,2,1,2,1,3,2,3,2,2,3,2,3,3,1,1,3,1,2,3,1,1,2,3,1,3,1,2,1,1,2,1,1,1,2,1,3,1,2,2,2,1,2,1,1,1,3,3,3,1,3,1,2,2,2,2,2,1,3,1,3,2,2,2,3,2,1,2,3,1,1,1,1,3,1,1,1,3,1,1,1,1,2,1,1,3,1,1,1,3,1,3,1,2,1,3,3,3,3,1,2,1,2,1,3,1,2,3,1,1,3,3,3,3,3,2,3,3,2,1,3,3,3,2,3,3,1,2,1,1,1,3,2,1,3,2,3,3,3,3,2,1,1,3,2,3,2,3,3,1,1,2,1,1,2,2,2,3,3,3,2,2,3,2,2,3,2,2,1,1,3,1,1,3,1,3,2,2,2,1,2,2,2,2,2,1,2,3,1,2,3,2,3,1,3,2,1,1,1,3,1,3,1,1,2,2,2,2,2,2,1,1,2,2,1,3,2,1,2,2,3,3,1,3,3,3,3,1,2,1,3,1,1,2,1,3,2,3,2,2,1,1,2,3,1,3,3,3,1,2,3,2,2,3,1,3,1,1,2,3,3,3,1,1,1,1,2,1,3,1,2,1,3,1,3,2,3,1,2,2,1,1,3,1,1,1,3,2,1,3,3,2,3,2,2,2,3,3,1,3,2,1,2,3,1,1,2,3,3,1,3,3,2,1,1,3,1,2,3,1,3,3,3,1,1,2,3,2,2,1,2,1,2,2,1,3,3,2,2,1,3,2,1,3,1,1,3,2,2,1,2,3,2,2,2,3,1,3,1,1,2,1,1,1,3,2,3,2,1,2,2,2,1,3,1,2,3,1,3,2,2,1,2,3,2,3,3,1,3,2,3,1,2,1,1,1,2,2,3,3,2,3,3,3,1,2,2,2,1,1,1,1,2,3,1,2,3,1,2,1,1,1,2,3,3,3,2,2,3,1,2,3,3,3,2,2,1,1,2,3,2,2,1,2,1,1,3,1,2,1,2,2,2,3,1,1,3,2,3,3,2,2,3,1,2,3,2,2,2,3,3,2,3,2,2,1,3,3,1,2,1,3,1,2,1,2,3,1,3,2,3,1,3,3,3,2,3,2,3,3,1,1,3,2,1,2,1,3,2,1,3,1,3,2,2,3,1,1,3,2,1,1,3,2,3,3,2,1,3,1,1,3,2,1,2,2,2,2,1,1,2,2,2,2,2,1,3,1,3,3,3,3,1,1,3,1,1,3,2,2,2,2,2,1,3,3,1,3,2,1,3,3,3,3,2,1,2,2,1,1,2,2,3,1,2,3,3,2,1,1,3,2,3,2,1,1,1,3,1,1,1,2,1,1,1,2,3,1,1,1,2,2,1,1,3,1,2,3,3,2,2,1,1,2,2,1,1,1,2,1,3,1,1,2,2,3,3,2,1,1,1,2,3,3,3,3,1,3,3,1,2,1,1,1,3,3,2,3,3,3,3,2,1,3,2,1,1,2,3,3,3,3,3,3,1,1,3,2,1,2,1,2,1,3,3,2,3,2,2,1,3,3,2,3,2,2,2,2,1,2,1,3,1,1,2,3,2,2,2,1,1,3,3,3,3,1,2,3,1,1,1,1,3,3,2,1,1,1,2,2,3,2,2,1,1,2,3,3,2,2,2,2,2,3,1,1,3,1,3,3,2,1,1,1,2,1,1,1,3,1,3,3,2,2,3,1,2,1,3,2,2,3,2,2,2,3,1,2,1,1,3,3,2,2,1,3,1,3,3,1,1,1,2,3,1,1,1,2,3,2,2,2,1,3,2,1,2,3,1,1,1,2,2,2,3,2,2,3,3,2,3,1,1,2,1,3,2,1,2,1,1,3,2,3,2,3,2,3,3,3,3,1,2,2,1,3,1,1,3,3,2,1,2,3,3,3,2,2,3,3,3,3,2,1,3,2,3,3,3,3,3,2,2,2,2,1,3,1,2,1,3,2,1,2,1,1,2,2,1,2,1,3,1,3,1,2,1,3,1,2,3,1,1,3,1,1,3,2,1,2,1,2,2,1,3,1,2,1,1,1,2,3,1,1,3,1,1,1,3,2,2,3,2,1,2,3,2,2,3,3,3,3,1,3,1,2,2,2,3,1,2,3,3,1,2,3,2,1,1,2,1,3,1,3,1,2,3,1,2,1,3,1,3,1,2,1,3,2,2,1,2,2,2,1,2,3,1,2,1,1,2,1,3,2,2,1,1,2,1,3,3,3,1,3,1,1,3,1,2,2,1,3,1,1,3,3,2,1,1,1,2,3,1,3,2,2,2,3,3,2,2,1,1,1,1,3,3,1,2,3,3,1,2,3,3,3,3,2,2,3,3,3,3,3,2,2,3,2,1,2,3,3,1,1,1,1,1,3,1,3,1,3,1,3,2,2,1,2,3,2,2,2,3,2,1,3,3,2,1,1,3,2,3,2,3,2,3,1,1,2,1,1,2,1,2,2,3,1,3,1,1,3,3,2,1,1,1,2,2,2,1,2,3,2,3,2,1,1,3,2,1,1,2,1,3,3,1,3,1,1,2,1,3,3,1,1,2,2,2,2,3,1,1,3,1,1,1,1,1,1,3,1,1,2,1,3,1,1,3,1,1,2,1,2,1,1,3,1,1,2,2,3,3,1,3,2,2,3,1,2,2,1,2,2,3,2,2,3,1,2,2,1,2,2,3,3,1,3,3,2,2,2,2,1,3,3,3,1,2,3,2,2,3,1,1,1,2,3,1,1,1,2,1,1,2,3,2,2,3,3,3,2,2,1,2,1,3,1,3,3,2,1,2,2,3,3,3,2,2,2,1,3,2,2,2,3,3,1,1,3,2,2,1,3,1,2,2,2,1,2,3,3,2,1,2,3,3,2,2,2,3,3,3,2,2,2,1,3,2,2,2,1,2,2,2,2,3,2,1,2,1,2,2,3,3,1,3,2,2,2,2,3,2,1,3,3,2,2,1,1,3,2,3,1,1,1,1,3,2,2,3,3,1,2,3,2,3,2,3,2,3,3,2,2,2,1,1,2,2,3,1,3,1,2,2,2,3,3,3,1,2,1,1,3,2,2,1,1,1,1,3,1,2,3,1,3,2,3,2,3,2,1,3,1,2,3,3,1,3,2,3,2,2,1,1,2,3,2,1,3,3,3,2,3,3,1,1,2,1,2,3,1,3,3,1,3,2,2,3,1,3,3,1,1,1,3,1,3,3,1,3,1,2,2,2,3,3,1,3,2,3,2,1,1,2,1,2,1,3,3,3,2,1,3,1,3,1,2,2,2,2,3,2,1,1,1,3,3,2,1,3,2,1,2,2,1,3,2,1,2,2,1,3,1,1,1,2,1,3,3,1,1,3,2,3,3,3,1,1,1,2,1,2,2,1,2,2,3,2,1,3,1,2,1,1,2,1,2,1,1,1,2,3,1,1,3,1,3,1,3,1,1,3,2,1,1,3,2,2,1,2,3,3,1,2,3,3,2,1,3,1,1,1,2,2,3,2,3,1,2,2,2,3,3,3,1,3,2,3,3,3,2,2,2,3,2,2,2,3,3,2,2,3,3,3,2,1,1,2,2,3,3,2,3,2,1,2,2,3,3,1,1,3,3,3,1,2,2,2,1,3,1,1,3,2,3,3,2,2,3,1,2,3,2,1,2,2,3,2,2,1,3,1,1,1,1,2,2,3,2,3,3,2,3,2,3,2,1,1,1,3,1,1,1,2,2,3,2,3,3,1,3,1,1,2,1,1,1,1,2,3,2,3,1,2,2,1,3,3,2,2,2,3,2,3,1,1,1,1,1,2,2,2,2,2,2,3,2,3,2,3,3,2,3,2,2,2,1,3,1,3,3,1,3,1,3,2,3,1,1,1,2,1,1,1,1,2,1,1,2,2,3,3,2,2,3,1,2,2,1,1,1,2,3,2,2,2,3,3,3,2,1,3,2,2,3,3,1,2,2,3,2,2,1,2,1,1,2,1,3,1,3,2,3,2,1,2,3,1,2,1,2,1,1,1,1,2,1,3,2,3,2,1,1,2,3,3,2,1,1,1,2,1,2,3,1,2,3,3,3,3,2,2,1,1,3,2,1,3,1,2,1,1,1,3,3,1,3,3,2,2,1,1,1,2,3,3,3,2,1,2,3,1,1,3,1,3,1,2,2,1,2,3,2,2,1,2,3,2,1,3,3,3,2,2,2,3,3,2,2,3,1,1,2,2,3,2,3,2,2,2,2,3,1,2,1,3,2,1,1,2,2,3,3,2,2,2,3,2,1,3,3,3,1,2,3,3,1,1,3,3,3,1,3,3,1,3,1,2,2,2,1,3,3,3,2,2,2,2,3,2,2,3,3,2,2,2,3,2,2,2,2,3,2,2,1,1,3,2,1,1,3,3,3,1,3,3,2,1,1,2,2,3,2,3,3,1,3,3,1,1,1,3,1,3,1,2,3,3,2,2,3,3,2,2,3,1,1,1,2,3,1,2,3,3,3,2,2,3,1,1,1,2,1,2,3,1,1,2,3,1,2,2,3,2,2,3,2,2,2,1,3,1,3,1,1,2,1,2,1,1,2,2,3,3,2,3,3,3,2,2,3,2,2,1,3,2,3,3,1,2,1,3,1,2,1,3,3,1,1,3,3,1,3,3,3,1,2,1,3,1,1,2,3,2,2,2,3,2,1,2,1,3,2,2,1,3,3,2,2,1,2,2,1,2,2,1,1,2,3,2,3,2,3,3,2,2,1,3,3,2,1,3,1,3,3,2,1,2,2,2,2,1,3,2,2,1,2,3,1,1,3,3,2,3,1,3,1,3,2,2,2,3,2,1,3,3,3,2,3,3,3,1,3,1,3,2,2,1,2,3,3,2,3,2,2,2,2,1,2,2,2,3,2,3,1,1,1,1,2,2,3,1,1,1,3,3,3,1,3,2,1,2,2,1,3,3,3,2,1,2,1,3,3,3,2,2,3,3,1,3,2,1,1,3,3,3,3,3,2,1,3,2,2,3,1,1,1,1,2,1,1,1,2,3,1,3,1,3,1,3,1,2,2,2,1,1,3,1,2,2,2,2,3,2,2,3,1,3,2,2,3,2,2,1,3,1,2,3,3,1,1,2,3,2,3,1,3,1,2,1,3,3,3,2,2,2,3,2,3,3,2,1,3,2,3,2,3,2,3,3,1,1,1,2,1,1,3,1,2,3,2,2,2,2,3,3,2,3,2,1,2,3,1,2,1,3,1,1,2,3,1,2,2,3,1,1,2,2,3,2,1,3,2,1,2,2,3,1,3,2,2,1,1,3,3,2,2,2,1,2,2,2,1,2,2,3,1,2,1,2,3,2,2,3,3,3,2,2,1,3,1,2,2,1,2,3,1,2,2,3,1,1,2,2,1,3,3,1,1,1,3,1,2,3,2,2,3,3,1,3,1,2,1,2,2,2,2,3,2,1,3,1,1,2,3,3,3,3,3,1,2,1,2,3,2,1,2,3,1,1,1,3,1,3,3,3,2,3,3,3,3,2,2,3,3,3,3,2,3,2,1,3,3,3,1,3,3,3,3,2,2,2,2,3,2,3,1,1,2,1,2,3,2,2,1,1,2,1,3,2,1,1,2,2,2,2,1,2,1,2,3,1,3,3,1,3,3,2,3,3,1,3,1,3,2,3,1,1,1,1,2,2,2,2,3,2,2,1,2,2,1,2,3,1,1,3,3,3,2,1,3,3,2,2,1,3,2,2,1,1,1,1,3,3,2,2,2,3,2,2,3,3,3,3,1,3,3,1,1,3,2,2,3,1,3,1,2,3,3,2,3,3,3,3,2,1,2,3,1,2,2,3,2,1,2,2,3,3,1,3,1,3,2,3,1,1,3,2,3,3,3,3,2,3,2,2,3,3,2,2,1,3,3,2,1,3,3,1,3,2,2,1,3,1,1,3,3,1,2,2,3,1,2,2,1,3,2,3,2,3,2,2,1,2,1,3,2,3,3,3,2,1,3,1,3,2,3,1,2,2,2,1,3,1,2,3,1,3,1,2,3,2,3,2,1,2,2,1,1,1,2,3,3,2,3,3,2,2,1,1,1,2,2,3,3,2,2,2,2,2,1,1,1,1,3,3,2,3,2,3,3,2,1,1,1,3,3,2,1,3,2,2,2,3,1,3,3,2,1,3,1,1,3,2,3,1,2,2,1,3,1,3,1,2,1,2,1,3,3,3,2,1,2,1,3,2,1,3,1,2,3,2,3,2,2,2,1,2,2,2,1,2,1,1,2,3,3,1,2,3,1,2,3,3,3,3,1,2,1,3,1,1,1,1,2,3,1,1,2,1,1,2,2,1,2,2,3,2,3,3,1,2,2,1,3,3,3,3,1,1,1,2,1,3,1,1,1,1,1,1,3,3,2,2,2,1,2,3,3,3,3,2,2,2,2,2,1,1,3,2,1,2,3,3,3,3,1,3,3,2,2,2,3,1,2,1,1,3,1,1,1,2,2,2,3,3,2,2,2,2,2,3,1,2,1,1,1,2,1,1,2,1,1,3,3,1,2,3,2,2,3,2,2,1,2,3,2,1,1,3,2,1,1,2,2,2,2,2,2,1,3,3,2,1,2,1,1,1,1,3,2,3,1,2,3,2,2,2,2,2,3,2,3,3,3,1,2,2,3,3,1,3,1,3,2,3,3,1,1,3,1,1,2,3,2,2,3,2,3,2,3,1,3,1,2,2,2,1,3,3,3,1,1,2,2,1,3,3,2,2,1,2,2,3,1,2,2,2,2,3,3,3,3,1,1,3,3,2,1,2,3,3,1,3,1,3,3,3,2,1,3,3,2,2,2,2,1,1,1,1,2,3,3,2,1,3,2,2,3,3,1,2,1,3,3,3,2,2,3,2,3,1,3,1,2,3,1,2,1,1,2,2,2,1,1,1,1,2,1,3,1,2,1,1,3,3,2,3,2,2,1,1,2,3,2,2,3,1,3,3,2,2,2,2,3,3,2,1,3,2,1,2,1,2,3,1,3,3,2,1,2,3,3,2,2,2,3,1,3,3,2,1,1,3,1,3,2,2,2,1,2,3,1,2,2,3,3,1,3,2,1,2,3,2,3,1,1,3,3,1,2,1,3,1,2,3,2,1,2,3,2,1,1,1,1,3,1,2,3,2,3,2,3,1,3,3,1,2,3,3,3,1,1,1,3,1,1,2,1,1,3,1,1,2,1,2,1,2,1,2,2,3,3,3,1,1,3,2,2,3,1,1,3,1,1,3,2,1,2,1,3,3,2,3,1,2,1,1,3,1,1,1,2,3,2,1,2,1,2,2,1,3,3,3,1,1,2,3,1,1,3,2,3,2,1,1,2,1,2,2,1,3,1,3,1,3,3,2,3,3,3,1,2,3,1,1,3,2,2,3,3,3,1,1,1,2,2,2,1,3,3,3,2,3,2,2,2,2,1,2,2,3,1,1,1,1,2,1,3,1,1,1,1,1,1,2,1,3,3,2,1,3,3,2,2,1,3,1,3,3,3,3,1,1,3,3,1,2,3,2,1,1,2,1,2,3,2,2,3,3,1,1,3,1,2,3,2,2,3,3,2,1,1,3,3,2,3,1,3,2,1,2,3,1,1,2,2,2,2,3,2,1,3,2,1,3,1,1,1,3,2,1,1,1,1,1,2,2,2,1,3,1,3,3,1,1,1,3,3,2,3,3,1,3,1,1,2,3,1,1,2,1,1,1,2,3,3,2,1,2,3,1,1,1,3,2,1,2,2,3,1,2,3,2,1,3,2,2,3,2,2,2,2,3,1,3,3,2,3,1,3,2,1,3,1,3,1,2,1,2,1,2,2,1,3,2,2,2,1,1,1,3,1,2,3,3,1,2,3,3,1,1,1,2,3,1,2,2,1,2,1,1,2,3,3,3,3,3,3,3,3,3,3,2,1,1,2,3,2,2,1,3,3,3,2,1,3,3,1,2,1,3,1,2,1,1,1,2,3,3,2,3,3,1,2,1,3,3,1,3,2,1,2,1,2,2,1,1,1,3,1,2,2,1,1,1,1,3,1,2,3,2,1,1,1,2,2,2,2,2,3,3,2,3,1,1,2,1,2,3,1,3,1,2,2,1,1,2,1,3,1,3,3,2,1,2,1,2,2,3,3,2,2,2,2,2,3,1,1,1,2,2,1,3,1,2,1,3,2,1,1,3,1,1,1,1,3,2,1,1,2,3,3,1,1,2,2,1,3,3,2,2,2,1,1,2,1,2,2,1,2,3,1,3,3,3,1,3,1,2,3,3,2,3,3,2,1,1,1,2,3,1,3,2,3,1,2,1,3,2,2,3,2,2,2,1,3,2,3,3,3,1,1,2,1,1,3,3,2,3,1,1,3,3,1,1,2,3,3,1,2,3,3,2,1,2,1,2,3,1,3,1,1,3,1,2,3,3,2,3,1,3,3,3,3,2,3,2,1,1,2,3,1,3,2,2,3,3,2,2,2,1,1,3,1,3,3,3,3,3,3,3,1,3,3,3,3,1,1,2,2,2,3,2,1,2,3,2,3,3,3,1,2,3,2,1,2,1,3,2,2,2,1,2,1,2,1,3,2,2,2,3,1,3,1,2,3,1,2,2,3,2,3,3,1,3,3,2,1,3,3,1,1,1,1,2,3,1,1,2,3,3,3,1,1,1,2,2,3,1,3,1,1,1,3,2,1,3,2,3,2,1,1,3,2,3,3,3,2,3,3,2,1,1,2,1,3,2,1,3,1,2,2,1,1,1,1,3,1,1,2,1,1,3,2,3,3,2,3,1,1,2,3,1,2,3,3,1,3,1,1,2,1,3,2,3,1,1,2,1,1,1,2,2,3,1,3,2,3,1,2,2,3,1,1,1,1,1,3,2,3,2,2,2,1,1,2,1,2,3,1,3,2,1,1,2,3,2,2,2,3,2,1,1,2,2,2,1,3,1,1,3,3,1,3,1,3,2,3,2,2,2,1,2,2,1,1,1,1,1,1,2,2,3,3,2,1,3,3,3,3,2,2,1,3,1,3,1,3,1,2,2,2,2,2,1,2,2,2,3,3,1,1,3,3,2,2,2,3,1,2,1,3,3,2,2,1,2,3,3,1,3,2,3,2,1,3,1,2,3,2,3,1,2,1,1,1,2,1,2,3,2,2,1,3,1,2,1,3,3,3,2,1,3,2,3,3,2,3,3,2,3,1,1,3,2,3,3,2,3,2,3,3,1,3,3,2,3,3,2,2,1,3,2,2,1,3,3,2,3,2,3,1,3,2,1,2,3,1,3,1,3,1,1,2,2,3,1,3,3,2,3,2,1,2,1,1,3,3,2,1,2,2,3,2,2,1,1,1,3,2,2,3,2,1,1,3,2,1,1,1,2,2,2,3,2,3,3,2,3,1,2,3,3,1,3,1,1,1,2,2,2,1,2,1,3,1,2,2,3,1,3,2,1,1,3,2,1,2,1,2,2,1,2,1,1,3,1,1,2,3,2,2,2,3,1,1,3,1,1,2,1,2,3,1,3,2,1,1,2,1,2,3,1,3,1,3,1,2,2,1,2,1,2,3,2,3,1,1,2,3,3,3,2,2,3,1,3,3,1,1,3,3,3,2,2,2,2,3,1,2,3,1,3,2,3,2,3,3,1,1,2,2,2,2,2,1,2,2,3,1,1,2,2,1,1,1,2,1,1,2,3,1,3,1,2,1,1,2,2,3,1,3,3,2,2,3,2,1,1,3,1,2,1,1,1,1,2,1,3,3,3,2,3,3,2,1,2,1,2,3,3,1,2,3,3,1,3,3,1,2,1,1,1,2,1,2,3,1,2,2,3,1,2,3,2,1,3,2,3,1,2,1,2,2,1,1,3,2,1,3,2,3,3,2,1,2,2,3,1,3,1,2,3,2,2,2,1,2,2,1,2,1,1,2,1,1,1,3,2,2,3,3,3,3,1,2,2,2,2,1,2,2,1,1,1,3,2,2,1,2,3,3,1,1,2,2,2,2,3,1,1,3,2,3,1,2,2,3,1,2,3,3,2,3,2,1,3,3,1,2,3,2,2,2,1,1,2,3,3,3,2,1,2,2,3,3,1,3,3,3,2,2,3,1,1,2,1,1,1,1,3,1,2,3,3,3,3,2,2,2,2,1,1,2,3,1,3,3,3,2,2,1,3,3,1,3,1,1,1,3,3,1,2,3,1,2,2,3,3,3,1,3,1,1,2,3,2,3,3,1,2,3,3,3,3,1,2,2,3,2,3,1,1,1,3,3,3,3,2,3,2,3,3,1,2,3,1,2,3,3,3,3,1,3,2,1,3,1,3,1,3,3,1,1,2,3,3,2,3,2,2,1,2,2,2,3,2,3,1,1,3,3,2,2,2,3,2,1,3,3,2,2,1,3,3,3,3,1,2,1,3,1,2,1,3,2,2,2,2,1,1,3,1,1,3,1,1,1,3,1,1,2,2,3,1,3,1,1,2,1,3,2,1,2,1,2,3,3,3,2,3,3,2,1,1,1,3,1,1,1,2,3,1,2,2,2,1,1,2,2,3,2,3,1,1,1,3,2,2,1,3,2,3,3,1,1,2,3,2,1,2,3,2,3,3,2,1,2,3,1,2,3,1,3,2,1,1,2,3,2,2,3,1,3,2,1,1,2,3,3,1,3,3,1,3,2,2,1,2,3,1,2,2,1,2,1,3,1,2,1,1,1,2,1,2,2,3,2,2,1,3,1,1,2,3,2,1,1,3,1,3,2,1,2,3,1,3,2,1,2,3,1,2,2,2,3,3,3,2,2,1,3,3,3,3,3,2,3,3,2,2,1,1,1,3,1,3,1,3,1,3,3,3,1,1,3,2,2,2,2,3,1,3,3,2,1,2,3,1,1,2,3,2,2,3,2,1,2,3,1,1,1,3,2,1,3,3,2,3,3,3,2,1,1,1,3,1,2,1,2,1,2,2,3,3,1,3,2,2,3,1,3,1,2,1,1,2,1,3,1,2,3,1,2,2,2,3,3,2,2,1,3,3,3,2,3,2,3,3,1,1,3,3,2,3,2,2,1,2,1,2,1,2,1,2,3,3,1,2,1,3,3,2,2,3,2,1,2,1,2,3,2,3,3,1,1,2,1,3,2,3,3,1,2,2,1,1,1,1,3,2,3,3,2,2,1,1,1,3,3,2,3,2,1,2,2,2,3,2,2,3,2,1,2,3,1,3,3,3,2,2,2,2,1,1,3,1,3,3,2,3,1,3,1,1,1,1,3,2,1,2,1,1,3,3,2,1,3,3,1,1,1,1,2,2,1,1,3,3,2,2,3,2,3,3,3,2,2,1,3,2,3,1,2,1,1,2,1,1,3,2,2,3,3,1,1,1,2,2,3,2,3,3,3,2,2,3,1,3,1,2,2,3,2,1,1,3,2,1,3,3,3,2,3,3,2,1,2,2,1,2,1,1,1,1,3,1,2,3,3,3,3,1,2,1,2,2,2,3,1,1,1,2,1,3,2,3,2,1,3,3,2,2,3,3,1,3,2,2,2,1,1,1,2,2,1,1,2,2,2,3,3,3,1,3,2,2,2,3,2,1,2,1,3,1,3,3,3,2,1,3,1,1,3,3,1,2,2,2,2,3,2,3,3,2,1,3,1,2,3,3,1,2,1,2,1,2,1,2,2,3,1,1,3,1,2,2,3,1,2,2,1,3,3,1,1,3,2,3,2,1,1,1,2,3,1,2,1,3,3,3,2,2,2,1,3,2,3,2,3,3,3,3,3,2,3,1,1,3,2,1,2,2,3,2,1,3,1,1,3,2,2,1,1,3,1,2,1,1,3,3,1,3,2,3,3,2,3,1,1,3,2,1,3,2,1,2,2,1,1,2,3,2,2,3,2,2,1,3,3,3,3,2,1,2,3,1,3,3,3,3,1,3,2,2,2,1,2,2,2,3,2,3,2,2,3,2,2,3,3,3,2,1,2,3,3,2,3,1,2,1,2,2,2,3,2,3,2,2,3,1,2,1,1,1,1,3,1,1,1,3,1,1,3,3,1,2,3,1,3,2,1,2,1,3,1,3,3,3,3,3,1,3,3,2,3,3,2,1,2,2,1,2,1,1,3,1,3,2,1,1,1,3,1,3,3,2,3,1,3,3,2,1,2,2,3,3,3,1,3,2,2,2,3,2,2,1,2,3,2,3,1,1,1,2,1,2,3,3,2,3,2,3,1,1,2,1,2,2,1,1,1,2,3,1,2,1,2,1,3,3,3,1,2,1,3,1,1,3,1,3,1,1,2,3,3,2,3,3,3,3,2,3,1,2,2,2,1,2,1,2,1,3,2,2,2,1,2,1,1,1,2,1,2,3,3,2,3,3,1,3,1,1,2,2,2,1,3,2,3,3,1,1,3,1,3,1,2,3,2,3,1,2,1,3,1,2,3,2,2,2,2,1,2,2,3,1,2,3,2,2,2,2,2,2,1,3,1,3,2,2,3,1,2,3,2,2,3,2,2,3,3,3,2,1,1,3,3,1,1,1,2,2,1,2,2,2,1,1,3,3,3,1,1,3,1,3,1,3,2,2,2,3,2,3,1,2,3,2,3,2,1,1,2,1,2,1,3,3,1,2,3,3,1,1,2,1,3,2,1,2,2,3,1,1,1,2,2,1,1,2,3,1,2,2,1,2,1,2,3,2,2,2,1,2,2,3,2,3,3,3,2,2,2,1,2,3,1,1,1,3,3,2,1,3,1,3,1,1,1,1,3,1,1,2,1,1,1,2,1,1,3,1,1,1,1,3,1,3,2,3,2,3,1,3,3,1,1,1,1,2,3,3,2,1,2,1,1,1,3,2,1,2,1,3,1,3,3,2,3,1,2,1,3,2,1,1,2,1,2,1,2,1,3,2,3,1,1,1,1,1,1,3,3,1,1,2,1,2,2,2,1,3,3,3,3,1,2,2,2,1,3,3,3,1,1,3,1,2,3,2,3,2,1,3,1,3,1,2,2,1,3,2,2,3,3,1,3,2,1,3,2,1,3,2,3,2,3,1,1,3,1,1,2,1,3,1,1,2,2,2,1,1,3,1,3,2,3,1,2,1,1,1,1,3,1,1,1,3,2,2,3,1,2,3,2,2,3,2,2,3,1,1,2,3,3,2,3,2,2,3,2,2,1,3,1,2,3,1,3,1,3,3,3,1,3,1,3,1,3,2,1,3,2,1,3,3,1,2,3,3,1,1,1,3,1,3,3,1,3,3,1,2,2,3,1,2,3,3,3,2,1,2,1,3,2,2,3,1,2,3,3,2,3,2,3,1,2,1,1,3,2,2,3,3,2,1,3,1,1,2,1,2,2,3,3,3,2,1,3,2,1,3,1,1,2,3,1,2,2,1,3,1,3,2,1,3,3,1,2,2,2,2,3,3,3,2,2,3,2,2,3,2,1,3,3,1,2,2,1,1,2,3,1,1,2,1,1,2,3,1,3,1,1,1,2,1,3,2,1,3,1,2,1,1,1,1,2,1,3,1,3,1,2,2,2,3,1,2,2,1,2,2,3,2,3,2,2,1,3,2,3,3,1,1,2,3,2,1,2,1,3,2,1,1,3,3,1,3,1,3,1,1,1,3,1,1,2,2,2,3,3,1,2,3,2,2,3,3,3,2,2,2,2,3,1,3,2,1,2,3,1,2,1,1,2,1,3,2,1,3,2,2,1,3,1,3,1,2,2,2,2,1,2,2,3,3,2,2,3,3,3,2,3,1,1,2,3,1,2,1,2,1,2,3,3,2,3,3,2,1,1,1,3,1,2,1,2,2,3,2,1,1,2,2,2,1,3,3,2,2,3,2,1,1,1,1,2,2,3,1,3,3,3,2,2,1,1,1,3,3,3,2,3,1,3,2,3,2,3,2,2,1,2,2,1,3,3,1,3,1,1,3,1,1,1,3,1,3,2,1,2,1,2,2,3,2,3,3,2,2,2,2,1,2,3,3,1,3,3,1,3,1,2,1,3,2,1,1,2,2,3,2,1,1,2,3,1,3,1,2,1,1,2,1,3,3,2,3,1,3,1,3,2,2,2,2,1,3,1,3,2,2,2,1,1,3,3,1,3,3,3,1,2,1,2,2,2,3,2,2,1,2,3,3,1,1,3,2,1,3,3,3,3,1,2,2,1,2,3,2,2,3,3,3,3,2,1,3,2,2,2,2,3,3,2,1,2,3,3,2,3,2,3,2,1,2,1,3,3,3,2,3,3,2,3,3,2,1,1,2,2,2,1,2,2,3,2,1,2,2,2,3,1,3,3,3,2,1,1,2,2,3,1,2,3,2,3,1,2,1,1,2,2,3,1,1,1,2,3,2,3,1,2,3,1,3,2,1,3,1,2,3,3,2,3,1,1,2,2,2,3,1,1,2,2,1,2,2,2,1,2,3,1,1,3,1,3,2,3,2,3,2,3,1,1,2,2,3,1,3,2,2,1,3,3,1,2,1,1,3,2,2,3,2,2,3,3,2,2,1,2,3,2,2,2,3,2,2,1,2,2,1,2,3,1,1,2,1,2,2,1,3,1,3,1,1,1,2,3,1,1,2,3,3,2,2,2,3,2,2,3,2,2,1,1,1,2,2,1,1,1,3,3,2,2,3,1,3,1,1,2,1,2,2,3,2,2,3,3,3,3,1,1,3,1,1,1,2,3,3,3,1,2,3,1,2,1,2,2,2,1,1,3,1,2,1,1,2,2,1,1,1,2,2,3,3,2,2,3,3,1,2,3,1,1,2,1,2,2,2,2,1,1,1,1,2,2,2,2,3,3,1,3,1,3,2,3,2,1,3,1,1,1,1,3,1,3,1,2,2,3,1,3,3,2,3,1,2,2,2,2,2,2,1,1,2,1,3,2,3,1,2,2,1,2,2,2,3,3,1,1,1,1,1,3,2,3,1,1,1,3,2,1,2,1,3,3,1,3,3,1,3,3,2,3,2,1,1,3,1,2,3,2,1,1,2,1,1,2,3,1,2,3,3,3,3,1,2,3,1,3,3,1,3,3,2,3,2,1,1,2,2,3,3,3,2,3,3,1,2,3,2,2,2,3,2,1,2,3,2,2,2,3,1,1,1,2,3,2,3,1,3,1,2,3,2,1,3,3,2,2,3,2,2,2,1,1,2,1,1,2,3,2,3,2,3,2,3,3,3,2,1,3,3,3,1,3,2,2,2,2,2,1,3,1,3,3,3,1,1,2,3,3,1,3,1,1,3,3,3,3,1,3,1,2,1,2,1,2,3,3,1,2,2,1,1,2,2,2,2,2,2,1,2,2,3,3,1,3,1,1,1,1,2,3,3,2,1,1,1,3,1,3,1,3,2,2,1,2,3,1,1,3,3,2,1,3,1,1,3,2,3,1,1,2,2,1,2,2,2,1,3,3,3,2,3,3,2,3,1,2,1,1,3,2,2,1,1,1,3,1,1,1,2,3,2,1,3,3,2,3,3,2,1,1,3,2,2,1,2,1,3,3,1,2,2,3,3,2,2,3,3,1,3,2,1,2,2,3,1,1,1,3,2,3,3,3,1,3,3,2,1,3,2,1,1,1,2,1,2,1,3,2,1,2,3,1,1,2,2,2,2,2,3,3,3,3,1,3,1,1,3,1,3,1,3,3,2,2,2,2,1,2,1,3,1,1,3,1,3,2,2,1,1,1,1,3,1,1,1,1,2,1,1,1,1,1,1,3,1,3,3,2,2,2,2,3,2,3,1,1,1,1,3,2,1,1,2,1,1,3,1,3,3,1,3,1,3,1,3,2,2,2,1,2,2,3,3,3,1,1,2,2,1,1,2,3,3,2,1,1,1,1,3,1,3,3,3,1,1,1,3,1,3,1,2,2,3,2,1,3,1,2,3,1,2,2,3,3,2,2,1,2,3,1,1,2,3,1,1,2,2,2,1,1,1,2,2,2,1,3,3,3,1,3,1,2,3,2,1,2,1,3,1,1,2,2,2,3,3,2,2,3,2,3,2,3,2,2,2,3,1,3,2,3,3,3,2,2,3,3,1,1,3,2,3,1,2,1,2,3,1,3,1,3,2,2,1,1,2,1,3,1,1,3,1,2,3,2,2,2,3,2,2,2,2,1,1,3,3,1,2,2,2,3,2,1,1,3,1,2,3,3,1,3,1,1,3,3,2,2,2,1,3,1,1,3,1,1,2,3,2,1,2,3,3,3,3,3,2,3,2,3,3,3,1,2,3,3,1,2,1,1,2,3,1,3,1,1,3,2,2,2,3,1,1,3,3,3,3,3,1,3,3,3,1,2,2,1,3,1,3,2,1,3,1,1,2,3,3,3,2,1,1,2,2,1,2,3,3,2,3,2,1,3,1,1,1,1,3,2,1,3,1,1,1,2,2,1,1,2,3,1,3,2,3,1,1,3,1,1,2,2,2,2,2,3,1,3,3,3,1,3,2,2,1,3,2,3,3,3,1,3,2,2,1,2,1,1,3,2,3,2,1,1,2,1,1,3,3,2,1,3,2,3,1,2,1,2,2,1,1,3,1,3,2,3,3,3,1,1,3,3,1,3,3,3,1,2,2,2,3,1,3,1,1,1,1,3,2,3,3,2,1,2,3,3,1,1,2,1,3,2,1,3,1,3,2,3,3,1,1,1,3,2,1,3,1,3,3,2,2,3,3,2,2,2,2,1,3,1,3,3,3,3,1,2,2,1,3,1,2,1,3,2,2,1,1,1,1,2,1,2,2,1,3,3,3,1,3,2,2,1,1,3,3,3,1,3,2,3,3,1,2,3,3,2,1,3,2,1,3,2,2,2,1,2,3,1,3,2,2,3,1,2,3,2,1,3,3,1,1,2,1,2,2,3,2,2,2,1,1,3,1,3,2,3,3,1,2,1,2,3,1,1,2,2,1,2,1,3,1,3,3,1,2,1,1,3,3,3,3,3,1,3,1,1,3,1,3,1,3,3,3,3,1,1,3,3,2,3,1,1,1,2,3,3,1,1,2,3,1,2,1,2,2,2,1,1,2,1,3,1,3,1,3,1,2,2,2,3,1,3,2,2,1,3,3,2,3,1,1,2,3,3,1,2,2,3,3,2,1,1,2,3,2,3,2,1,1,1,2,2,2,1,3,1,1,3,1,2,3,2,2,1,2,3,3,2,3,2,2,2,3,3,2,2,3,3,1,1,3,2,2,3,1,1,2,2,2,3,3,3,1,3,3,3,1,2,2,3,3,3,1,2,1,2,3,3,3,2,3,1,2,2,3,1,1,1,3,1,3,2,1,1,3,3,3,1,3,1,3,1,1,1,2,1,3,1,2,3,1,3,2,3,3,3,2,3,1,1,1,1,3,2,1,3,1,1,1,3,3,2,1,1,2,1,1,2,2,2,2,1,3,3,2,3,2,2,3,1,1,1,3,3,3,2,1,1,1,1,2,2,3,1,3,1,2,2,1,3,3,1,3,3,2,1,3,2,3,3,1,2,2,1,2,2,3,2,2,2,3,2,2,2,3,3,2,2,1,1,3,1,1,2,3,3,2,3,2,3,1,3,1,1,3,1,2,1,2,3,2,1,1,2,3,2,3,3,3,2,2,2,2,1,3,1,1,1,3,3,2,2,1,2,2,2,1,3,2,2,1,1,2,3,2,1,1,2,2,2,2,2,1,2,1,2,1,2,3,1,3,2,2,2,1,1,3,1,3,1,3,2,2,3,3,1,1,2,3,3,2,2,2,3,3,2,2,3,3,1,1,3,3,2,2,1,3,2,1,2,2,2,2,3,1,2,3,2,2,1,3,2,2,2,2,3,1,3,3,3,2,3,2,2,3,3,1,1,1,1,1,3,1,1,1,3,2,3,2,1,3,2,2,2,2,1,2,2,2,3,2,3,1,3,2,1,3,1,3,2,2,2,3,1,1,3,2,3,3,1,1,1,3,3,3,2,3,2,1,3,3,3,1,1,3,1,1,3,3,2,3,1,2,1,1,1,2,2,3,1,3,1,1,3,3,1,2,3,3,3,3,1,2,3,1,2,3,3,1,2,3,1,2,3,1,2,2,3,1,1,1,2,2,2,1,1,1,1,3,1,2,3,2,1,3,2,2,1,1,3,2,2,3,3,2,2,2,1,1,3,3,1,2,3,2,3,2,3,2,1,3,1,2,3,2,1,3,2,3,3,2,3,3,2,2,3,3,3,3,2,2,1,1,3,3,2,1,1,2,1,1,2,2,1,2,1,3,2,3,1,2,2,2,1,1,1,1,2,2,2,1,3,3,3,2,3,2,2,1,2,2,2,2,1,2,3,1,1,2,2,3,2,3,2,2,3,2,2,3,3,3,2,1,1,1,2,2,1,2,3,3,2,3,1,1,1,1,1,1,3,1,1,1,1,3,2,1,2,1,1,2,2,3,1,3,2,2,3,1,1,3,2,1,1,1,1,2,3,2,1,2,3,3,1,3,2,1,1,2,1,1,2,2,2,1,3,1,1,3,1,2,3,1,2,2,3,2,1,2,2,3,2,3,1,3,1,1,2,1,2,3,1,1,2,2,2,2,2,2,2,1,3,1,2,2,1,3,3,2,1,1,1,2,1,1,1,1,3,3,2,3,3,1,3,3,1,3,2,2,3,3,3,3,1,2,1,3,2,2,2,1,3,3,3,1,3,3,3,2,1,1,3,3,3,3,2,2,3,3,2,3,2,3,2,2,2,2,2,2,2,1,2,3,2,2,1,3,1,1,3,3,2,1,1,3,3,2,1,1,1,3,2,3,3,2,1,1,2,1,2,2,1,2,3,3,3,1,1,3,3,3,3,1,3,2,2,2,1,2,3,3,3,3,2,3,1,3,2,2,2,3,3,3,2,2,2,1,3,3,3,3,2,3,3,1,3,2,3,2,1,2,1,2,2,2,3,1,3,1,2,2,1,3,2,3,1,1,1,2,3,3,1,1,1,2,1,3,2,2,3,1,1,2,3,3,1,3,2,2,3,3,3,3,1,3,1,1,2,1,3,3,2,1,2,3,1,2,3,1,2,2,2,1,3,3,1,3,2,3,2,2,3,1,2,3,3,1,1,1,3,1,2,1,2,3,2,3,3,3,2,3,3,2,2,1,3,1,1,2,2,2,1,2,1,1,2,3,3,3,1,3,2,2,1,2,2,1,2,3,3,1,2,1,2,1,2,2,1,3,3,3,2,1,2,1,2,3,3,2,3,1,2,3,1,1,2,2,2,2,1,2,1,3,1,2,3,1,3,3,2,3,1,1,2,3,1,3,3,3,3,3,1,3,1,2,1,1,1,2,3,3,3,2,2,3,1,2,1,3,1,2,2,3,3,3,1,1,1,3,3,1,1,3,1,3,1,1,2,1,1,1,3,1,3,3,2,3,1,1,2,2,3,1,2,1,1,2,2,2,3,1,2,3,2,3,3,3,1,1,3,1,2,2,2,3,1,2,2,2,1,3,3,1,1,3,2,1,3,2,1,1,3,3,2,2,2,2,3,3,1,1,3,2,2,1,2,2,2,2,2,3,3,2,1,3,1,3,2,2,1,3,3,2,2,1,1,1,2,1,3,2,1,1,3,1,1,1,3,1,3,2,1,3,3,1,2,1,3,2,3,2,3,2,2,2,1,3,1,1,1,3,3,2,3,2,3,3,3,1,3,2,3,1,3,1,1,3,1,2,1,3,1,3,3,2,2,1,3,2,3,1,1,3,2,2,1,1,2,3,1,3,2,3,1,3,1,3,3,3,3,3,1,1,1,3,3,2,1,2,1,3,1,3,3,1,3,3,3,3,3,3,2,1,3,1,2,2,3,1,3,3,2,3,3,1,2,1,1,1,2,1,1,3,3,1,1,3,2,3,2,3,2,1,3,1,3,1,3,1,1,1,3,2,2,3,3,2,2,3,2,1,3,1,3,1,1,2,3,1,3,2,2,1,1,2,1,1,2,2,3,1,2,3,3,1,3,1,1,2,1,1,1,3,2,1,3,2,1,2,1,1,2,2,1,3,3,1,2,1,2,1,1,3,3,2,2,3,3,1,2,1,2,3,1,3,2,1,2,3,2,3,3,3,2,2,3,2,1,2,3,2,2,3,3,1,2,3,1,3,1,2,1,3,2,2,1,2,1,2,1,1,2,1,2,1,2,2,3,1,2,1,3,2,3,1,3,1,3,1,3,3,2,1,1,3,2,3,1,3,2,3,1,2,1,1,2,1,1,1,3,2,2,3,1,3,2,3,2,2,3,1,1,3,2,1,2,2,2,1,1,3,1,1,1,1,1,1,1,1,3,3,2,3,1,3,1,1,1,3,1,1,3,3,2,3,3,3,3,3,1,3,3,3,2,2,2,1,2,1,2,2,2,3,2,1,3,3,3,1,2,3,3,1,1,3,3,1,2,2,1,3,3,2,3,3,2,3,3,3,2,3,1,3,1,3,1,1,2,1,3,2,1,1,3,2,2,3,2,1,2,2,3,1,1,1,3,3,2,3,2,3,1,1,1,3,3,3,3,2,1,1,1,1,3,1,1,2,3,2,2,1,1,1,2,3,1,3,3,1,3,1,3,3,2,1,1,2,1,1,2,3,2,3,2,2,2,3,1,1,2,2,2,1,2,3,1,2,3,2,3,3,1,2,3,1,2,1,1,1,2,1,2,2,3,3,3,1,1,2,1,1,3,3,1,1,2,3,2,3,3,2,1,3,3,1,3,2,1,2,2,3,1,1,2,1,1,1,1,3,2,3,2,1,3,2,2,3,3,3,1,1,3,3,2,2,3,3,1,3,3,3,1,1,3,1,3,1,3,1,2,3,2,1,1,2,1,2,2,2,2,3,2,3,3,3,2,1,3,1,1,1,2,3,1,3,1,1,3,1,3,3,2,3,3,3,2,1,2,1,2,2,1,3,3,2,1,3,3,1,2,2,3,1,1,2,2,1,3,2,1,1,2,3,3,3,3,1,3,1,2,1,3,1,2,3,2,2,1,3,3,1,1,2,2,1,3,3,1,2,1,3,3,3,2,1,2,3,3,1,2,3,3,1,3,1,3,3,2,2,2,1,1,1,1,3,1,2,1,3,1,2,2,1,1,2,1,1,3,3,1,1,2,1,2,1,2,3,3,1,2,3,3,3,1,3,1,1,1,3,3,2,3,2,3,3,1,2,2,1,1,3,1,2,1,2,3,1,1,1,2,2,1,2,1,3,1,2,2,3,3,1,1,3,2,3,2,3,3,3,3,3,3,3,1,3,2,2,2,1,2,1,1,2,2,1,3,1,3,3,1,1,1,2,3,3,1,3,3,1,1,1,1,3,3,2,2,1,2,3,2,1,2,2,3,3,1,2,2,3,3,3,1,2,1,1,2,1,2,3,1,3,1,1,3,2,2,2,2,2,1,1,1,2,1,3,3,2,1,1,1,2,3,3,1,1,2,3,2,2,1,3,2,1,3,2,2,2,1,3,3,3,2,3,1,1,1,1,3,2,3,1,3,2,3,3,2,2,1,1,2,1,2,3,1,3,3,3,1,1,2,3,1,3,2,1,1,3,3,3,3,1,1,1,3,1,1,3,3,3,2,2,2,3,3,3,3,2,2,1,3,3,2,3,3,3,1,2,3,3,2,1,1,3,2,3,3,2,3,1,1,2,1,3,2,1,3,2,1,3,1,1,2,1,1,2,3,2,2,3,2,1,1,3,2,3,3,2,2,2,3,1,2,1,3,2,1,1,2,2,3,2,2,1,1,1,3,1,1,1,2,3,1,2,1,1,3,1,2,1,2,3,3,2,3,3,3,2,1,1,1,3,1,1,1,2,1,3,3,3,3,1,2,2,1,1,2,3,2,2,3,2,1,2,1,3,1,3,3,2,1,3,2,1,3,2,1,2,2,2,1,1,2,3,3,3,2,3,1,3,2,3,2,3,3,1,2,3,2,3,3,1,1,2,2,3,2,2,1,1,3,2,3,2,2,3,1,1,3,3,3,2,1,2,3,1,1,2,1,3,1,2,3,1,1,2,1,2,2,3,1,1,2,2,2,3,1,2,2,3,2,1,3,1,1,3,3,3,3,1,3,1,2,2,3,3,1,2,1,1,3,1,3,3,3,3,2,2,1,1,1,1,1,3,1,3,3,2,2,1,3,2,1,2,1,1,1,2,1,3,1,3,1,2,2,3,2,3,3,3,3,2,3,3,2,1,1,1,1,1,1,1,2,3,2,1,2,1,2,1,3,3,2,3,1,2,1,1,1,2,2,2,2,2,1,1,3,1,1,3,2,3,3,2,3,1,1,1,2,1,3,2,3,2,1,2,3,3,3,1,1,2,3,3,1,1,2,1,1,2,1,2,3,2,2,2,1,3,1,2,3,1,2,3,1,3,3,3,2,2,2,1,3,2,1,3,3,2,2,2,1,1,2,3,2,1,2,1,1,2,2,1,2,3,3,1,2,2,3,3,1,3,3,2,1,1,2,1,2,2,1,3,3,2,3,2,1,2,3,3,2,1,3,1,3,2,3,1,1,1,1,1,1,3,2,3,3,2,2,3,2,3,1,1,2,3,1,3,3,2,2,2,3,3,1,3,2,1,1,1,3,3,1,3,1,1,2,3,3,1,2,3,3,2,2,3,3,1,2,2,3,2,2,3,2,1,2,1,2,3,1,2,1,2,1,3,3,3,3,3,3,2,2,1,1,3,2,2,3,3,3,1,3,3,1,2,3,1,2,2,1,3,3,1,1,2,1,3,2,3,1,1,2,1,2,3,3,1,3,1,3,1,1,1,2,2,3,2,1,3,2,3,1,3,2,2,1,2,2,1,1,2,1,2,1,2,1,2,3,1,2,2,3,1,1,1,2,2,1,3,3,1,1,3,2,2,2,2,2,1,3,3,3,1,3,1,3,2,1,1,3,2,1,1,1,3,1,2,2,2,3,2,2,2,1,3,1,1,3,1,3,2,1,2,2,2,2,1,1,1,1,3,3,2,2,2,2,3,1,1,2,1,1,3,3,3,2,3,1,1,2,2,1,3,3,3,2,2,3,2,2,3,2,3,2,1,1,2,2,1,1,2,2,2,3,3,3,3,1,3,1,1,1,3,1,1,1,2,3,3,2,3,3,1,3,1,2,1,3,1,3,1,3,1,2,1,1,3,2,3,2,3,2,1,3,3,1,1,1,1,1,3,2,1,3,3,1,1,3,1,1,2,3,3,3,1,3,2,3,1,2,1,2,1,2,2,3,1,1,2,2,3,2,3,2,2,1,2,2,2,2,3,2,1,2,1,2,2,3,3,2,2,1,3,3,3,3,1,1,3,3,2,3,2,3,1,3,3,2,1,3,2,2,3,2,2,3,2,3,3,2,2,3,3,1,2,3,2,1,2,1,1,2,3,3,2,3,2,3,2,3,1,2,2,1,3,1,1,2,1,3,3,3,1,2,1,1,3,2,2,2,3,2,2,1,2,1,2,2,1,3,2,3,3,3,2,1,2,1,3,2,3,3,2,2,3,2,3,3,2,2,1,2,1,3,1,2,3,2,1,2,1,1,1,1,1,2,2,1,1,1,1,2,3,2,1,2,2,1,2,2,3,3,3,2,3,2,3,1,2,1,1,1,3,2,3,2,3,1,2,2,2,2,3,2,2,1,2,1,1,2,2,3,1,2,3,3,3,2,3,3,2,3,2,2,1,1,1,3,1,2,3,2,1,3,2,1,2,3,2,3,3,3,2,3,1,3,1,3,1,3,1,1,1,1,3,1,1,2,2,3,3,2,1,1,3,3,1,3,3,1,1,2,3,1,3,2,2,3,1,3,3,2,2,2,3,3,2,2,3,2,3,3,3,1,1,1,1,3,2,3,3,3,3,3,2,1,2,2,2,1,3,3,3,3,2,3,1,1,2,1,2,2,3,1,1,3,3,2,3,3,2,1,1,2,3,2,2,2,3,3,1,2,2,2,1,3,1,1,2,1,1,1,1,2,1,1,2,2,2,3,3,2,1,3,3,1,2,2,2,1,1,1,3,1,1,3,2,1,2,2,3,1,1,2,2,3,2,1,3,3,2,2,2,2,3,1,2,2,2,2,3,3,1,2,3,1,1,3,1,3,3,1,1,2,3,1,1,3,3,3,3,2,2,1,3,1,2,1,3,1,1,3,2,3,2,1,1,1,3,1,2,1,2,3,1,1,2,1,1,2,1,3,3,2,1,2,3,3,2,1,1,2,3,2,2,1,1,1,3,3,3,3,1,1,3,3,3,2,3,1,2,3,1,2,2,2,1,3,2,1,3,3,2,1,2,2,2,1,1,2,1,1,3,1,2,3,2,3,1,3,2,3,1,2,1,3,1,2,2,2,3,1,3,2,2,2,3,2,1,1,3,2,1,3,1,1,2,1,2,2,1,1,3,2,1,3,3,1,3,2,1,3,1,2,3,1,2,2,3,2,2,2,2,1,1,1,3,2,3,3,1,1,1,3,3,3,2,2,1,3,3,3,3,2,1,1,2,3,2,1,1,2,3,2,1,1,3,3,1,3,3,3,3,3,2,3,2,3,1,2,3,3,1,2,2,2,1,3,2,2,1,2,3,2,1,3,3,3,1,3,2,1,3,3,1,2,3,1,3,1,2,2,2,3,3,1,1,1,2,3,1,3,2,3,3,1,3,2,1,1,3,3,1,3,1,2,3,1,1,3,2,2,2,3,2,2,2,2,3,2,3,2,3,3,3,2,2,1,2,3,3,1,3,1,1,3,2,3,2,2,2,2,1,1,1,3,3,2,2,3,1,2,3,3,3,3,1,3,3,3,2,1,2,1,2,3,1,2,3,2,2,3,1,2,2,1,1,3,1,1,2,2,1,2,3,2,3,2,2,1,2,1,3,2,3,2,3,2,1,2,3,2,1,2,1,1,1,1,2,3,3,1,1,1,2,2,1,2,2,2,3,2,1,3,3,3,3,1,2,2,3,1,3,3,1,2,2,1,3,2,2,3,1,3,3,2,3,2,3,2,2,1,2,3,3,1,1,2,1,2,2,1,3,3,1,3,2,3,1,3,2,3,2,3,2,3,2,2,2,2,2,3,3,2,2,2,1,1,3,3,1,3,3,1,2,1,1,3,1,3,2,1,2,3,3,3,1,1,2,3,2,1,1,2,1,1,1,3,2,3,3,2,3,1,2,3,3,2,1,1,3,3,3,2,3,1,3,1,2,1,2,1,2,3,1,2,2,1,3,3,2,3,1,3,1,3,3,2,1,1,3,1,3,3,2,3,1,3,2,2,1,2,2,3,2,3,2,1,1,1,3,2,1,2,2,2,2,3,1,1,1,1,2,3,2,1,3,1,3,1,1,3,3,2,3,1,1,2,2,1,1,1,2,2,1,3,1,1,1,2,2,3,2,2,1,2,3,1,3,3,1,2,2,3,3,3,3,3,2,3,2,1,3,2,1,1,2,1,3,3,3,2,3,2,1,2,1,2,2,2,2,2,2,2,1,2,3,2,1,2,3,2,1,2,2,1,3,3,1,3,2,3,2,3,1,3,2,3,2,1,2,3,2,1,1,2,2,1,3,3,1,2,1,3,2,3,1,3,2,1,1,2,1,1,3,3,3,3,3,3,1,1,2,2,1,1,2,1,3,3,2,3,2,1,2,2,2,2,2,1,1,1,1,1,3,2,1,1,1,1,1,3,1,2,2,1,3,2,3,1,3,1,2,3,1,2,2,1,2,2,2,3,1,3,1,2,2,3,2,1,3,3,1,2,3,1,2,1,1,3,2,1,3,1,1,1,3,3,3,1,3,2,3,3,1,3,1,1,1,3,1,3,3,1,3,1,3,2,2,1,2,3,1,1,3,2,1,1,2,1,2,3,2,1,3,3,1,3,3,3,3,3,1,2,1,1,2,2,2,1,1,1,2,3,2,2,3,2,1,1,1,3,3,1,3,2,2,1,3,2,1,1,3,3,2,1,3,1,3,3,2,1,3,2,2,1,1,2,3,1,3,1,2,1,1,3,1,2,1,2,3,1,1,1,1,3,2,3,3,3,2,2,2,2,2,2,3,2,1,2,3,1,3,1,1,1,3,1,1,3,1,3,1,3,3,2,3,1,1,1,3,1,2,2,3,3,1,3,2,1,2,1,2,2,1,2,2,1,3,2,1,2,3,2,3,1,3,1,1,1,3,3,1,2,2,3,3,1,3,3,1,3,1,1,3,1,3,1,1,3,3,2,2,3,3,3,1,1,1,3,1,2,2,2,3,1,1,2,1,2,2,1,2,3,3,3,2,2,2,2,2,2,3,1,3,3,3,2,3,2,2,3,1,2,2,2,3,3,3,1,2,3,1,2,3,3,1,2,2,2,1,1,1,1,3,1,1,2,3,1,1,1,1,3,3,3,3,1,1,3,2,2,1,3,2,2,1,1,3,3,2,3,1,3,2,2,2,2,2,1,2,2,1,1,2,1,1,3,3,2,1,3,3,2,2,1,3,3,3,3,3,1,1,1,1,1,2,3,3,3,1,3,3,3,3,3,3,2,1,3,2,3,3,1,2,3,2,2,3,3,3,3,1,3,3,1,2,1,1,2,1,3,3,1,3,1,3,3,3,1,3,2,2,2,1,3,2,2,2,2,3,3,1,2,1,2,1,3,2,2,1,2,1,1,1,3,3,2,1,2,3,2,1,3,1,3,2,1,3,1,1,2,3,1,1,2,3,2,2,1,1,2,1,2,2,2,1,1,3,3,1,2,2,2,2,1,3,1,2,1,1,3,1,3,1,2,3,1,3,2,1,2,1,1,2,1,3,3,1,2,1,2,1,1,3,3,1,3,3,2,3,1,1,1,3,3,1,1,2,2,1,3,2,3,1,2,3,3,2,3,1,3,2,1,2,1,3,3,1,3,2,3,1,1,2,2,3,3,1,1,1,1,1,1,3,2,2,2,3,1,2,1,1,1,2,1,2,2,3,2,2,3,2,1,1,3,2,1,2,3,2,3,1,2,3,3,2,3,1,1,1,3,2,2,3,2,1,3,1,2,2,3,2,2,3,3,2,2,2,2,1,1,1,3,1,3,1,3,3,1,1,3,3,3,2,1,1,1,1,3,2,2,3,3,3,2,3,1,1,1,3,3,3,1,3,3,3,1,3,2,1,3,1,1,1,1,2,1,3,2,1,3,2,1,1,3,3,1,2,1,1,3,2,3,3,1,3,3,2,2,2,3,1,3,1,1,1,2,2,1,1,3,3,3,1,3,3,1,1,3,3,1,2,3,3,1,3,3,3,2,2,1,3,2,2,3,1,2,1,3,2,2,1,2,3,3,2,2,3,1,2,3,1,1,1,2,3,1,1,3,3,3,3,3,1,1,2,2,2,3,2,3,2,2,1,3,3,1,1,3,2,3,1,1,2,3,2,1,2,1,3,2,3,1,3,1,3,3,2,3,3,1,1,3,3,3,3,2,1,3,2,1,2,3,3,1,3,2,2,1,2,2,1,1,1,2,3,2,2,1,2,1,2,3,1,2,3,1,2,1,1,3,2,3,1,3,3,2,1,3,2,1,2,3,1,1,1,1,1,2,3,2,3,2,2,2,3,3,3,3,1,3,3,2,3,1,1,2,3,1,2,3,1,1,2,1,2,1,1,1,2,2,2,3,1,3,2,3,3,3,2,1,1,3,1,1,3,2,1,3,2,1,1,1,3,2,1,1,2,1,2,2,1,1,1,3,3,3,1,1,1,1,3,2,1,1,1,3,2,1,1,1,3,3,3,1,2,2,2,2,1,2,1,3,1,2,3,3,2,1,2,1,3,3,3,2,2,1,3,1,3,1,3,3,3,3,2,1,2,3,1,1,3,1,3,2,2,2,2,2,2,3,1,1,2,2,3,1,3,1,3,3,3,2,1,2,1,2,3,2,1,3,3,2,2,2,3,3,1,2,3,2,2,3,2,3,3,3,2,2,1,1,3,1,1,3,1,1,2,1,2,1,1,3,3,3,3,2,1,1,2,1,2,3,3,2,1,2,1,3,1,3,3,3,3,1,1,2,2,3,1,1,3,3,2,2,1,1,3,3,3,2,2,3,2,3,3,2,2,2,2,3,1,1,3,2,3,1,2,2,2,3,1,1,2,2,2,2,2,1,2,1,2,2,3,2,1,2,1,2,2,3,2,3,1,1,3,1,2,3,1,1,3,3,2,2,1,2,2,2,2,2,3,1,1,2,1,2,3,3,2,3,2,2,3,3,3,1,2,2,2,1,1,3,3,3,2,1,3,3,1,3,3,2,2,3,1,1,3,1,2,2,2,2,2,3,3,3,2,1,3,1,2,2,2,3,3,2,2,1,2,3,1,1,3,1,1,3,3,3,2,1,2,3,1,2,3,2,2,2,2,3,1,3,2,1,3,3,1,2,1,1,3,1,2,1,3,3,2,2,1,1,1,2,2,3,2,2,1,3,3,1,1,3,1,2,3,2,3,3,2,2,3,3,3,2,2,2,1,3,1,1,1,2,1,2,3,1,1,1,2,1,3,1,1,3,3,2,3,1,3,3,1,1,1,3,2,2,1,2,1,2,2,2,1,1,2,3,2,2,2,2,3,2,1,3,1,3,2,1,2,2,1,3,2,1,2,1,2,2,3,1,1,2,1,2,3,1,1,1,3,3,3,2,1,1,2,2,1,2,2,3,1,3,3,3,1,3,3,1,1,1,3,1,3,1,3,1,1,2,1,1,3,2,3,3,3,2,3,1,1,3,2,2,3,1,1,3,2,1,1,2,2,1,1,3,2,2,3,1,3,3,3,2,2,1,3,3,2,2,3,2,1,3,3,1,1,2,1,3,3,1,1,3,2,1,2,2,2,1,2,3,3,2,2,3,3,3,2,1,2,3,2,3,3,2,1,3,1,2,2,3,3,3,1,2,1,2,1,2,2,3,1,3,2,1,2,3,1,1,3,3,2,2,2,3,2,3,3,3,1,1,2,3,3,2,3,3,3,1,1,3,3,3,1,3,2,1,3,3,3,2,2,1,1,3,1,1,2,1,1,3,1,1,3,3,3,3,2,2,3,1,3,3,1,3,2,2,3,2,1,3,1,1,1,1,3,2,3,1,2,1,2,3,3,3,1,1,3,3,1,3,1,1,3,3,2,3,1,2,1,2,3,3,2,3,2,1,2,1,3,2,3,2,1,3,2,2,3,3,1,1,2,1,3,1,3,3,1,2,2,1,1,2,2,2,2,3,1,2,3,1,3,1,3,2,3,3,3,1,2,3,2,3,1,3,1,3,3,1,2,1,3,2,3,3,3,1,2,1,1,3,1,2,3,2,2,1,2,3,2,2,1,1,2,2,1,1,2,2,3,2,2,1,1,2,1,3,2,3,3,2,2,3,1,1,1,3,3,3,2,1,2,2,1,1,2,2,1,1,2,3,2,1,3,2,1,2,3,2,3,2,3,2,3,3,1,1,3,2,1,3,1,3,1,2,3,2,1,2,2,2,1,1,3,1,2,3,2,1,1,3,2,2,3,2,2,2,1,2,2,3,1,1,1,1,2,2,1,2,1,1,3,1,3,2,3,3,3,3,3,3,3,3,1,3,2,1,3,1,2,3,1,1,1,1,3,3,2,1,1,1,1,1,1,2,3,2,3,2,1,3,3,3,2,1,3,1,2,2,2,3,2,3,3,1,1,1,3,2,2,2,1,2,3,3,2,3,3,1,1,2,1,2,1,3,2,1,2,1,2,2,2,3,2,2,1,1,1,2,1,3,3,3,3,2,1,1,1,3,1,2,1,1,3,1,3,3,2,3,1,2,1,1,2,3,3,1,3,3,3,1,2,3,2,2,2,3,3,3,1,1,2,3,1,2,3,2,2,3,2,2,1,3,1,2,3,3,1,2,3,3,1,3,1,2,1,3,1,3,1,1,3,2,1,1,3,1,1,1,3,1,1,3,2,3,1,1,2,2,3,2,1,1,1,3,1,1,1,3,3,2,3,1,2,1,1,2,1,3,1,2,3,2,1,3,2,2,2,3,1,1,2,3,1,3,3,2,1,3,2,2,1,3,2,3,1,2,1,2,3,3,3,2,1,2,1,1,1,3,2,2,1,2,2,2,2,1,1,1,3,2,1,3,3,2,1,2,2,3,2,1,1,3,3,1,3,2,2,3,2,1,2,3,2,3,3,3,1,1,1,3,3,3,2,1,2,3,1,2,3,3,1,1,1,3,3,1,1,1,3,1,3,3,2,3,1,2,3,2,2,3,1,3,2,3,1,2,2,1,3,2,1,2,3,1,1,2,2,3,1,2,1,1,2,1,2,2,3,1,2,1,3,1,1,3,2,2,3,1,1,1,3,3,3,3,1,2,1,1,1,1,1,2,1,3,2,1,1,2,3,1,1,1,1,3,1,2,1,1,1,1,3,2,2,2,1,2,2,1,3,3,2,2,1,3,2,3,3,2,1,1,2,3,3,3,2,1,3,1,3,3,2,1,1,1,1,2,1,2,1,3,3,1,3,3,1,3,3,2,2,3,3,3,1,3,1,3,3,1,2,2,2,2,3,3,3,3,1,2,1,1,1,3,1,3,2,3,1,1,1,2,1,2,1,1,2,3,1,2,3,1,3,3,1,2,3,3,3,3,1,2,3,1,3,2,3,3,3,3,3,2,3,1,1,3,3,2,1,2,3,1,3,3,3,2,3,2,1,2,1,1,2,1,2,2,2,1,3,1,1,2,3,3,1,3,2,3,1,1,1,3,1,1,2,1,2,1,3,3,3,1,2,3,1,3,3,1,2,1,2,1,3,3,3,1,1,1,1,3,2,3,3,3,2,2,1,2,3,1,3,1,1,2,3,3,3,1,1,1,1,3,1,1,1,2,3,2,2,3,1,1,2,1,2,1,2,1,2,3,2,2,2,2,2,3,3,3,3,2,2,2,2,1,3,3,1,3,3,2,1,2,2,2,1,2,1,3,3,3,2,3,1,1,1,1,2,2,2,1,2,3,3,3,1,3,3,1,2,3,2,3,1,3,3,2,1,1,3,1,2,3,2,3,2,2,3,1,1,2,3,2,2,2,3,3,2,3,3,2,3,1,3,1,2,3,1,2,2,1,1,1,1,1,3,3,3,3,2,3,3,2,3,1,1,2,1,3,1,3,2,2,1,1,2,2,1,3,1,2,2,2,1,1,1,2,1,1,1,3,3,3,3,2,2,3,3,1,2,3,2,3,1,3,3,1,2,1,1,2,2,1,2,3,2,2,1,3,2,2,1,2,1,1,3,3,3,3,1,2,1,2,2,2,1,1,1,1,3,2,3,3,3,3,3,1,1,3,2,3,1,2,3,2,3,3,3,2,3,1,2,1,3,3,3,2,2,1,3,1,3,3,2,3,3,1,3,1,1,1,3,1,3,1,2,2,2,1,3,1,2,1,2,1,2,1,3,2,3,3,3,2,2,2,1,2,2,2,1,1,2,2,3,1,1,3,2,3,2,2,3,1,3,3,1,2,1,2,2,3,2,3,1,3,1,2,1,1,2,1,1,1,2,3,3,2,1,1,2,3,1,2,2,2,2,2,3,1,2,2,1,3,1,3,3,3,2,2,2,1,1,1,2,1,2,1,1,1,2,3,1,3,3,3,1,2,2,1,2,2,3,2,2,1,1,3,1,3,3,3,3,2,3,3,3,1,1,2,1,3,2,1,1,1,1,3,2,2,2,3,3,1,1,1,3,2,1,2,1,2,3,2,1,2,1,3,1,1,3,2,1,3,3,2,2,1,2,2,1,1,1,1,1,2,2,2,2,2,1,1,2,3,3,2,3,2,3,3,2,3,3,1,1,3,1,1,1,3,2,3,1,3,2,2,1,3,3,2,3,1,3,3,2,1,2,1,1,3,2,3,1,1,1,3,1,3,1,3,2,1,3,1,2,2,1,1,1,1,2,1,1,3,3,1,2,2,1,1,3,2,3,2,2,3,2,1,1,3,1,2,1,3,2,2,1,3,3,1,1,2,3,3,1,1,2,2,3,2,3,2,1,2,3,2,1,2,2,3,3,3,3,3,3,3,1,3,1,1,1,2,2,1,2,2,1,1,3,3,1,1,1,2,1,1,2,3,2,3,3,2,3,1,2,3,2,3,1,1,3,1,1,1,2,2,1,2,2,2,3,2,2,1,2,3,3,3,3,3,3,1,1,2,3,2,1,1,3,3,3,3,3,2,1,2,3,2,2,2,3,2,2,3,1,1,1,3,3,2,1,1,2,3,1,3,1,3,2,2,2,3,1,1,1,3,2,3,3,3,1,2,2,2,2,3,2,2,1,2,1,3,3,2,3,2,3,1,2,1,1,2,3,3,2,2,1,3,1,2,3,1,1,3,2,2,1,1,3,3,1,3,2,2,3,2,1,1,1,3,2,2,3,3,2,2,2,3,2,1,2,1,1,1,2,1,1,3,3,1,3,3,2,1,3,3,3,2,3,1,2,2,3,3,1,1,1,3,1,3,3,2,2,3,2,1,3,2,1,3,1,3,3,1,2,2,1,1,2,3,2,3,1,3,1,2,2,2,1,1,3,3,3,2,3,1,3,3,2,3,1,2,1,3,3,2,3,1,3,3,3,2,1,2,3,3,3,3,1,2,3,2,3,1,2,3,1,2,1,3,2,1,1,2,2,1,2,1,2,2,3,1,1,2,3,3,2,1,1,2,3,2,3,2,2,2,3,1,3,3,2,2,3,1,1,1,2,1,2,3,2,1,3,1,3,3,3,3,2,1,1,1,2,2,3,2,1,2,3,3,1,2,1,2,2,1,1,2,2,1,3,2,1,3,1,1,1,3,1,1,1,3,2,1,3,2,1,2,1,2,1,3,1,1,3,2,2,3,3,3,3,3,2,1,2,2,2,1,3,2,2,3,1,3,3,1,3,1,2,2,2,3,1,1,1,2,2,2,1,2,3,3,3,1,1,1,1,1,2,1,1,2,2,1,1,3,1,2,2,3,3,3,3,3,3,3,1,3,1,1,1,3,2,1,1,2,2,3,2,2,3,2,3,2,2,1,1,3,3,2,2,2,1,2,3,1,3,2,2,1,3,1,2,2,1,3,3,3,3,1,2,1,3,3,1,1,2,3,1,3,1,3,3,2,3,2,1,2,1,1,1,2,3,2,1,3,3,1,3,3,2,2,1,3,1,1,2,2,1,2,2,1,2,3,1,1,3,2,3,1,1,2,2,3,1,2,3,3,2,1,3,1,1,2,2,3,3,3,1,1,1,1,1,1,3,2,1,1,3,2,2,1,1,2,1,3,3,2,2,1,3,2,1,2,2,2,1,2,1,1,2,1,2,2,3,1,1,1,2,2,1,3,2,2,1,2,3,3,2,3,1,1,3,1,1,2,2,3,1,2,3,2,2,3,2,3,3,3,1,3,2,2,2,3,2,1,2,1,2,2,2,3,2,1,2,1,1,3,3,3,1,2,1,3,1,3,3,3,1,3,2,3,1,3,3,1,1,3,2,1,2,2,3,3,1,3,2,3,3,3,3,3,1,3,1,1,2,3,2,1,2,3,3,2,3,3,1,2,1,1,2,1,1,2,2,3,2,2,1,3,3,1,3,2,3,1,3,2,2,1,2,3,1,3,3,1,2,3,3,2,3,2,2,2,2,1,3,1,1,2,1,3,3,1,1,3,2,2,2,2,3,3,2,2,3,2,3,1,3,1,3,2,1,2,3,3,1,1,1,1,1,1,2,2,2,1,2,3,1,2,3,1,2,2,1,2,1,1,2,2,1,2,3,2,3,3,3,2,3,2,1,3,3,1,1,3,1,1,3,2,1,2,1,2,1,1,3,1,2,3,2,1,1,3,2,1,3,3,2,2,3,1,1,1,1,3,3,3,2,3,1,1,1,1,2,3,3,2,2,1,3,2,1,2,3,2,3,3,1,2,3,3,2,1,1,2,3,2,1,3,2,2,1,1,3,2,3,3,3,3,2,2,2,1,3,3,2,3,2,1,1,2,2,1,3,1,1,2,3,1,2,3,1,3,1,3,2,3,3,3,3,1,1,3,3,3,3,2,1,2,1,1,2,3,2,1,3,1,2,3,1,2,1,3,2,2,3,2,3,3,1,3,1,1,1,3,3,2,1,1,1,2,3,2,2,1,3,1,3,3,2,2,1,2,1,3,1,1,2,1,2,2,3,1,1,1,2,2,1,1,1,2,3,3,2,3,2,2,3,2,2,3,2,2,3,3,3,1,2,1,3,1,3,1,1,2,3,1,2,1,2,2,1,1,1,1,1,3,2,1,2,2,3,1,1,3,2,3,1,3,2,1,3,3,2,2,2,1,1,1,3,2,2,2,3,2,1,1,2,1,3,2,3,2,2,2,2,3,1,2,3,2,2,1,1,3,2,1,1,3,2,3,2,2,3,2,1,2,3,1,1,3,1,3,1,1,1,3,2,1,1,3,1,3,2,2,3,3,1,2,2,1,2,3,3,3,1,1,1,2,2,1,1,1,1,1,3,1,1,3,3,2,2,2,3,1,3,2,1,3,3,2,1,1,2,3,1,1,2,1,2,3,2,2,2,3,3,1,3,2,2,3,3,3,1,1,2,2,1,3,3,3,1,3,3,3,3,1,1,1,1,1,1,3,2,3,2,3,3,1,1,2,1,1,1,2,3,3,1,2,3,2,1,3,1,1,2,3,1,3,3,1,3,3,3,1,2,3,2,3,3,1,2,3,2,1,3,3,3,2,1,3,2,1,2,2,2,3,1,2,2,1,2,3,2,3,2,3,1,3,1,1,1,3,2,1,2,2,3,3,3,1,2,2,2,1,2,1,2,2,1,3,1,1,1,2,3,2,2,2,3,2,3,1,1,3,3,1,1,2,1,1,3,1,1,2,2,3,3,3,1,2,1,2,1,2,3,3,2,2,2,3,1,2,3,3,2,2,1,2,2,3,1,2,3,2,1,3,2,2,2,1,2,3,3,3,3,1,2,1,2,2,3,3,1,3,2,1,3,1,2,2,3,2,1,1,3,1,2,1,2,3,2,3,3,2,3,1,1,1,3,1,1,1,3,2,1,1,2,1,2,2,1,2,2,3,1,3,3,3,1,3,1,2,2,2,2,2,1,2,3,1,3,2,3,1,1,1,1,2,3,2,1,1,1,2,2,1,2,3,1,1,3,3,3,1,1,2,2,2,1,3,1,1,3,3,1,1,2,1,2,2,3,3,3,3,1,2,3,3,3,1,1,1,1,1,3,1,1,2,3,2,2,1,2,2,3,3,2,3,2,3,2,2,2,3,3,1,1,1,1,2,1,2,1,3,1,2,3,3,2,1,1,3,2,1,3,1,2,3,1,2,2,2,1,2,2,2,3,1,2,3,3,1,1,2,2,1,3,1,2,2,2,3,3,3,3,2,3,3,2,1,2,1,1,3,2,3,2,2,1,3,1,2,3,3,1,3,3,2,2,1,1,3,1,3,2,3,3,2,2,1,3,1,2,1,1,1,2,2,3,2,1,2,2,2,3,1,3,3,1,3,3,2,1,2,1,2,1,2,3,1,3,2,1,3,3,3,2,3,2,1,3,1,2,3,1,1,3,1,3,1,2,2,1,3,2,1,1,3,2,3,2,3,2,2,2,2,3,3,1,1,2,3,1,3,3,2,3,1,3,1,1,1,2,1,2,3,1,3,2,1,2,3,3,3,3,3,2,1,2,3,3,2,2,3,1,3,3,2,3,3,2,1,3,2,2,2,3,1,2,2,2,3,3,2,2,2,2,2,3,2,1,2,3,2,2,3,3,3,3,3,3,2,2,1,1,3,1,3,3,3,2,3,1,2,2,2,3,2,2,1,1,3,2,1,3,2,3,2,2,1,1,3,1,1,1,2,2,1,1,2,1,3,3,2,2,3,3,2,1,1,2,2,3,2,3,2,3,3,3,3,1,3,1,2,2,3,1,2,3,2,2,1,2,2,1,2,1,3,2,3,2,3,3,2,1,3,3,2,2,1,1,2,3,1,2,2,2,3,1,2,2,2,3,1,3,2,3,2,2,3,2,2,2,1,1,1,2,2,2,3,1,1,2,3,3,2,2,3,1,1,3,1,1,1,1,1,1,3,3,2,3,1,3,1,2,2,1,2,3,3,1,3,1,2,3,1,2,2,2,2,1,2,1,1,3,2,1,1,2,2,3,3,3,1,3,1,2,2,3,1,2,1,2,3,3,1,2,3,3,2,2,1,1,2,3,1,1,3,2,1,2,3,2,2,1,3,3,1,2,1,1,3,2,2,2,3,3,3,3,3,2,1,3,2,2,3,1,1,2,3,3,1,1,3,3,3,2,2,2,2,2,2,1,2,1,3,3,3,2,1,2,3,1,3,3,1,3,2,1,3,3,1,3,1,3,2,2,2,2,1,3,3,3,2,1,2,3,2,1,1,2,1,1,2,3,2,1,1,3,3,3,1,1,3,1,1,1,1,1,2,2,1,3,1,2,3,3,2,2,1,2,2,1,1,2,2,2,2,1,2,1,3,2,2,2,2,3,3,2,1,3,2,2,1,3,1,1,1,1,3,2,2,2,3,2,1,3,3,1,2,2,2,3,1,3,2,2,2,2,1,1,3,3,3,3,3,1,3,2,3,1,3,3,2,1,2,1,2,1,3,3,2,3,1,2,3,1,1,1,1,3,1,3,3,1,2,1,3,2,3,2,1,2,2,3,2,2,2,1,3,3,2,2,1,3,3,3,3,2,2,1,1,2,3,3,3,3,2,2,1,2,3,2,1,3,3,3,1,1,1,2,2,3,2,2,3,3,3,2,2,3,1,1,1,2,3,1,2,2,1,1,3,1,2,3,1,2,2,3,2,1,2,2,1,1,3,3,3,3,1,3,2,3,1,1,1,1,2,2,2,1,1,3,3,2,1,2,2,2,1,3,1,3,3,3,3,3,1,2,3,1,1,1,1,2,2,2,2,3,3,1,1,3,3,2,1,1,3,3,1,1,1,2,2,1,2,2,1,1,3,3,3,1,1,2,3,1,3,2,1,2,3,1,3,1,1,3,1,2,3,1,2,3,3,2,1,1,3,3,1,2,3,1,3,3,3,3,1,1,3,3,2,2,2,2,3,3,3,2,2,1,2,1,2,3,3,2,2,1,2,3,2,1,3,3,1,3,2,3,2,1,3,1,3,3,2,1,1,1,3,1,3,3,1,3,3,3,1,3,3,2,3,1,1,3,2,1,2,1,3,1,3,1,3,1,2,1,2,1,3,1,2,1,2,1,1,1,3,2,2,2,1,1,3,3,1,1,2,3,2,3,2,1,1,2,2,1,2,1,1,1,1,1,3,3,2,1,3,2,1,1,1,1,1,1,1,3,2,2,1,2,3,2,1,2,2,2,1,1,1,1,3,1,1,1,2,1,1,3,1,3,1,3,2,1,2,3,3,3,1,2,2,1,2,1,1,3,3,3,2,3,2,3,1,3,2,1,3,3,1,3,3,2,3,2,2,1,3,3,1,1,3,2,1,3,3,3,2,3,1,3,1,1,1,3,2,1,3,2,3,1,2,2,1,2,1,2,1,1,2,1,3,1,2,1,1,2,2,2,1,1,1,1,1,3,3,2,3,1,3,1,2,3,3,1,2,3,1,3,3,3,3,1,3,1,2,2,3,3,3,2,2,3,2,2,2,1,3,1,3,3,2,3,2,1,2,3,2,2,1,3,1,2,2,2,3,2,2,1,3,1,2,3,2,2,2,2,2,1,2,3,3,1,3,1,3,3,2,3,3,1,2,2,2,2,3,2,2,1,3,1,1,3,2,1,3,3,3,1,1,2,3,1,1,3,1,2,1,1,2,3,3,3,1,3,3,3,1,1,3,2,3,1,1,3,2,1,2,3,3,1,1,3,1,1,1,3,1,3,1,3,1,1,1,1,2,2,2,2,2,1,2,3,2,2,3,1,1,2,2,3,3,2,1,1,1,1,2,1,2,2,1,2,2,1,1,2,2,1,3,2,1,2,2,2,3,3,3,2,2,2,1,3,1,3,3,1,2,2,3,3,3,2,3,3,1,2,1,2,1,2,1,1,2,3,2,1,2,1,1,3,2,1,1,3,2,1,3,2,1,3,1,1,3,3,3,3,3,1,2,3,2,1,2,3,1,2,3,2,3,2,1,1,2,1,1,2,1,2,1,2,1,1,2,3,3,2,2,3,1,3,3,3,3,1,2,3,2,3,3,3,3,2,1,3,3,2,3,1,3,3,1,3,3,3,1,2,2,1,3,1,1,2,3,3,3,3,1,1,2,1,1,2,3,2,1,2,2,1,3,1,2,2,2,2,1,3,3,2,2,2,2,2,3,3,2,1,2,1,1,2,2,1,2,1,3,1,3,3,3,1,3,2,1,1,2,2,3,1,2,3,3,2,1,2,3,2,2,1,2,1,2,3,3,2,1,2,3,2,1,3,1,1,2,2,3,1,2,2,1,2,2,2,1,3,1,1,3,2,3,1,1,2,2,2,3,2,1,3,1,2,2,1,3,1,3,3,2,2,1,1,1,1,1,2,2,1,2,3,3,2,1,1,3,1,3,1,3,1,1,1,2,2,3,1,3,2,2,2,1,1,1,2,2,1,1,2,3,2,3,1,2,3,3,3,1,3,3,3,3,2,2,2,2,2,3,2,2,3,2,2,1,1,2,3,2,1,2,2,1,2,2,2,3,1,3,3,3,2,3,2,1,2,1,1,3,3,2,2,2,3,1,1,2,3,1,2,3,2,1,3,1,1,2,2,2,1,1,2,3,1,2,2,2,3,1,3,2,3,2,1,1,1,1,2,1,3,1,1,2,1,2,2,1,2,3,1,2,3,1,3,2,3,1,1,2,3,1,2,1,1,1,1,3,2,1,1,3,3,1,3,3,3,1,1,3,1,2,2,1,3,1,3,1,3,3,3,2,3,1,3,3,3,3,2,1,1,2,2,3,3,2,3,2,2,1,2,3,2,2,2,1,2,1,3,3,2,2,3,1,2,2,2,2,3,3,2,1,2,2,1,2,2,3,2,2,2,2,3,2,2,2,3,1,1,2,1,1,2,1,3,1,1,2,3,3,3,3,3,3,1,3,1,2,2,3,2,1,3,3,1,1,1,3,3,2,3,1,2,3,2,3,3,3,3,1,2,2,1,1,2,1,2,3,1,2,1,3,2,2,3,2,2,3,1,3,1,1,3,3,2,1,2,3,3,1,2,3,3,1,2,3,3,1,2,1,3,2,2,1,3,2,1,1,1,3,3,2,3,1,2,3,1,3,2,1,3,3,1,3,1,1,3,3,3,2,3,1,2,2,1,2,2,2,2,2,2,1,2,2,2,3,1,2,3,3,2,2,3,1,2,2,3,3,1,2,2,3,1,1,2,2,3,1,1,2,1,3,1,3,1,3,3,3,3,3,3,1,1,1,3,1,2,2,1,2,3,2,3,3,2,3,1,2,2,2,2,3,1,3,2,3,2,1,2,2,1,3,3,2,3,2,3,1,3,1,3,1,3,2,2,2,2,3,1,1,1,3,1,3,2,2,1,3,3,1,1,3,1,2,3,2,1,1,3,1,3,1,1,3,3,1,3,1,1,1,1,1,2,3,1,3,2,3,2,2,3,2,1,2,1,1,3,2,1,1,3,1,3,3,3,1,2,2,3,2,1,1,3,3,1,3,1,1,2,1,3,2,2,1,1,3,1,3,2,1,2,2,2,3,1,2,1,3,3,2,2,3,2,1,2,2,3,3,1,3,2,3,2,3,3,1,2,1,2,3,2,1,2,3,1,3,3,3,2,1,1,3,3,2,2,3,1,1,3,3,2,3,2,1,3,2,2,1,1,3,3,2,2,3,3,2,3,3,1,2,1,3,2,2,3,3,3,1,2,2,2,2,1,1,2,2,3,3,2,1,2,3,1,1,3,2,1,2,2,1,1,3,1,1,2,2,1,3,3,3,1,1,2,1,3,3,3,3,2,1,2,1,1,2,1,1,3,2,3,1,1,2,1,1,3,2,3,1,3,1,2,3,3,2,1,3,2,2,2,3,1,1,3,1,1,3,2,1,1,3,3,1,2,1,1,3,3,2,2,1,2,1,3,3,1,3,2,3,2,1,1,3,3,2,3,2,1,3,3,3,2,1,1,1,3,1,2,1,3,2,2,1,1,2,3,1,3,3,1,3,2,3,3,2,2,2,1,1,1,1,1,1,1,3,1,3,2,3,1,2,3,3,1,1,1,1,1,3,1,2,1,3,1,3,2,1,2,2,2,3,3,1,3,1,2,3,1,1,2,3,1,3,3,3,2,1,2,1,2,2,2,2,1,3,2,1,1,1,3,3,1,3,2,3,1,1,1,3,2,2,3,3,3,3,3,1,1,1,2,2,1,3,1,2,1,3,3,2,1,3,2,1,3,1,2,1,2,1,1,1,2,3,1,1,1,2,2,2,3,1,1,2,2,3,3,3,1,3,3,1,2,2,1,2,3,1,2,3,1,3,3,1,3,3,3,2,3,3,3,3,3,3,2,3,3,3,3,1,1,3,2,1,2,1,3,2,3,1,1,2,2,1,1,1,1,2,1,1,3,2,1,3,3,3,2,1,3,1,2,3,2,3,2,2,2,3,1,1,3,3,3,2,3,3,2,1,1,3,3,3,1,1,3,2,3,1,3,3,2,2,2,2,1,2,3,1,2,3,2,1,1,3,2,2,1,2,3,2,1,1,1,3,3,3,1,3,3,2,3,1,2,3,3,3,2,1,2,2,1,3,3,2,2,2,1,1,3,2,1,3,2,3,2,2,1,3,2,3,1,3,3,1,1,1,2,1,2,2,2,3,1,1,2,3,3,3,3,1,3,3,1,3,2,2,1,3,1,2,3,1,2,1,3,1,2,2,3,2,2,1,2,1,2,3,3,3,1,2,1,3,1,1,3,1,3,1,1,3,1,3,1,2,1,3,3,2,2,1,1,2,3,2,2,1,3,2,1,2,3,1,2,3,2,2,1,3,1,3,2,1,1,3,2,3,1,1,2,2,2,3,3,1,1,3,2,2,1,2,2,1,1,2,2,3,1,1,2,2,2,1,1,3,1,1,3,2,3,1,2,1,2,1,2,1,1,2,2,3,3,2,2,2,3,1,3,2,2,2,1,1,1,2,2,3,1,1,2,3,1,1,2,2,1,2,1,1,1,1,3,1,2,3,1,2,1,3,1,3,1,2,3,1,3,3,2,2,3,1,3,2,2,3,3,1,1,3,3,2,1,2,3,2,2,1,3,1,3,3,2,2,1,3,1,1,3,2,3,3,2,2,3,1,2,3,2,1,1,3,3,3,2,3,1,1,3,3,2,2,2,1,2,1,3,1,1,2,3,3,1,1,3,3,1,3,3,1,2,1,2,2,2,3,2,2,3,1,1,2,1,3,2,2,1,1,3,3,3,3,2,2,1,2,1,1,3,3,1,1,2,3,1,3,1,1,3,2,3,1,3,2,2,2,2,3,1,1,1,2,1,3,1,2,1,1,3,3,2,2,1,1,1,2,2,1,1,1,2,3,2,2,3,2,1,2,2,3,2,1,3,3,2,2,1,3,3,1,2,1,3,3,3,3,1,2,2,1,1,1,3,2,2,2,2,1,3,3,2,1,3,2,2,3,2,2,1,2,1,2,1,1,1,3,2,3,1,2,2,2,2,3,2,2,3,3,1,2,3,3,3,3,1,2,3,3,3,1,2,1,1,3,1,2,2,3,1,3,2,2,3,2,3,3,2,3,1,2,2,2,2,2,2,1,3,1,2,1,3,3,3,2,3,1,1,2,3,3,1,2,1,1,2,3,2,3,3,2,1,3,3,3,1,2,2,2,3,2,3,3,1,3,1,3,1,3,2,3,3,1,3,2,2,2,2,1,3,1,2,2,3,3,1,2,2,3,2,2,1,1,1,3,2,3,3,2,3,1,1,1,2,1,2,1,3,1,1,1,1,1,1,2,3,2,3,1,3,3,2,1,3,3,2,2,3,2,3,1,2,1,2,1,2,2,3,2,1,3,2,2,3,3,1,1,1,3,3,3,2,2,3,2,2,2,3,1,2,1,1,3,1,3,3,3,2,1,3,2,2,3,1,3,3,2,1,2,3,3,1,2,3,2,1,1,3,1,2,1,3,2,1,1,3,1,3,2,1,2,1,1,2,2,2,3,1,3,1,3,1,1,1,2,3,2,1,3,2,1,3,2,2,2,1,1,1,3,3,1,1,3,3,2,2,2,1,1,2,1,2,1,3,3,3,1,1,1,1,2,1,1,3,2,1,1,3,3,3,3,1,2,3,3,2,1,2,1,3,2,3,1,2,1,1,2,3,2,3,2,3,3,2,1,1,3,2,1,2,2,3,3,3,3,2,2,2,1,3,3,3,2,1,3,3,2,1,1,3,2,1,2,2,2,3,1,1,1,3,3,2,3,3,3,3,2,3,2,2,3,1,1,1,3,2,3,2,2,1,1,3,1,3,1,1,2,2,1,3,3,3,2,1,1,3,3,1,2,2,3,3,1,1,1,3,2,3,2,3,3,2,1,1,1,1,2,3,2,3,3,1,1,3,1,2,1,1,2,2,2,2,1,3,1,3,3,3,3,3,3,3,1,3,3,2,1,1,2,2,1,2,3,2,3,1,3,1,1,3,2,1,2,1,2,2,3,1,2,1,3,2,1,3,2,3,3,2,3,3,1,3,2,2,1,3,2,2,3,2,2,2,1,2,3,2,3,3,3,2,3,1,3,3,1,3,3,3,3,1,2,2,2,1,3,3,3,2,3,1,1,2,3,3,3,1,3,3,1,2,3,1,3,1,3,2,1,1,3,3,3,2,2,3,3};
ListNode *head = new ListNode(0);
int i;
for(i = 0; i < sizeof(data) / sizeof(int); i++){
ListNode node = ListNode(data[i]);
node.next = head->next;
head->next = &node;
}
Stopwatch ^ stopwatch = Stopwatch::StartNew();
head = sortList(head);
head = head->next;
while(head != NULL){
cout<<head->val<<endl;
head = head->next;
}
stopwatch->Stop();
cout<<"time:"<<stopwatch->ElapsedMilliseconds<<endl;
//function end
system("PAUSE");
return 0;
}
所以针对相同数字进行一下改进就AC了:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode ** listqsort(ListNode ** l)
{
ListNode *start;
ListNode *end;
ListNode *finish;
ListNode *tmp;
start = l[0]->next;
end = l[0]->next;
finish = l[1];
if ( start->next == finish)
{
return l;
}
ListNode *middle, *middle2, *p;
middle = l[0]->next;
middle2 = middle;
p = start->next;
//nodes before middle are less than middle, nodes behind are equal or larger
while(p->next != finish){
tmp = p->next;
if (p->val < middle->val)
{
p->next = start;
start = p;
}else if(p->val == middle->val){
if(p == middle2->next){middle2 = p; end = middle2;}
else{
p->next = middle2->next;
if(middle2 == end)end = p;
middle2->next = p;
middle2 = p;
}
}else{
end->next = p;
end = p;
}
p = tmp;
}
//last node
if (p->val < middle->val)
{
p->next = start;
start = p;
}else if(p->val == middle->val){
if(p == middle2->next){
middle2 = p;
end = middle2;
}else{
p->next = middle2->next;
if(middle2 == end)end = p;
middle2->next = p;
middle2 = p;
}
}else{
end->next = p;
end = p;
}
end->next = finish;
end = finish;
l[0]->next = start;
ListNode **result = (ListNode **) malloc(sizeof(ListNode*) * 2);
if(start == middle || start->next == middle){
result[0] = l[0];
}else{
ListNode **before = (ListNode **) malloc(sizeof(ListNode*) * 2);
before[0] = l[0];
before[1] = middle;
before = listqsort(before);
result[0] = before[0];
free(before);
before = NULL;
}
if(middle2 == end || middle2->next == end){
result[1] = end;
}else{
ListNode **behind = (ListNode **) malloc(sizeof(ListNode*) * 2);
behind[0] = middle2;
behind[1] = end;
behind = listqsort(behind);
result[1] = behind[1];
free(behind);
behind = NULL;
}
return result;
}
ListNode *sortList(ListNode *head) {
if(head == NULL)return head;
ListNode ** result = (ListNode **) malloc(sizeof(ListNode*) * 2);
result[0] = new ListNode(0);
result[0]->next = head;
result[1] = NULL;
result = listqsort(result);
head = result[0]->next;
free(result);
return head;
}
};
再上一个leetcode上有人发的,归并排序思想的算法:
class Solution {
public:
ListNode *sortList(ListNode *head) {
if(!head || !head -> next) return head;
ListNode * cur = head;
int len = 0;
while (cur) len++, cur = cur -> next;
ListNode * ans = new ListNode(0);
ans -> next = head;
for (int width = 1; width < len; width += width){
ListNode * start1, *end1, *start2, *end2, *last;
last = ans;
while (last -> next) {
start1 = last -> next;
end1 = move(width, start1);
if(end1) start2 = end1;
else
break;
end2 = move(width, start2);
ListNode * next_for_last = end2 ;
ListNode * new_last;
last -> next = mergeSort(start1, end1, start2, end2, new_last);
last = new_last;
last -> next = next_for_last;
}
}
return ans -> next;
}
private:
ListNode * move (int k, ListNode * cur) {
for (int i = 0; i < k && cur; i++) cur = cur -> next;
return cur;
}
ListNode * mergeSort (ListNode * start1, ListNode * end1, ListNode * start2, ListNode * end2, ListNode * &new_last) {
if (!start1) return start2;
if (!start2) return start1;
ListNode * merge , *head;
if (start1 -> val < start2 -> val) {
merge = start1;
start1 = start1 -> next;
} else {
merge = start2;
start2 = start2 -> next;
}
head = merge;
while (start1 != end1 && start2 != end2) {
if (start1->val < start2->val) {
merge -> next = start1;
start1 = start1 -> next;
} else {
merge -> next = start2;
start2 = start2 -> next;
}
merge = merge -> next;
}
while (start1 != end1) {
merge -> next = start1;
start1 = start1 -> next;
merge = merge -> next;
}
while (start2 != end2) {
merge -> next = start2;
start2 = start2 -> next;
merge = merge -> next;
}
new_last = merge;
return head;
}
};效率上来说比快排还稍微好一点,30000个数字大概190ms,快排是230ms.
本文探讨了一种链表排序算法,初始尝试使用类似快速排序的方法但遭遇效率瓶颈,尤其是在面对大量重复元素时。通过对算法进行针对性优化,解决了这一问题,并实现了O(nlogn)的时间复杂度及固定空间复杂度的要求。
1619

被折叠的 条评论
为什么被折叠?



