leetcode sort list

来源:互联网 发布:新加坡域名后缀 编辑:程序博客网 时间:2024/05/21 08:58

链表排序。要求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 largerwhile(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 nodeif (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 startint 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 endsystem("PAUSE");return 0;}


这个变态的测试数据基本全是相同数字,大概30000个数字。这样的话效率还比不上插入排序。


所以针对相同数字进行一下改进就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.

0 0