leetcode sort list

链表排序。要求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;
}


这个变态的测试数据基本全是相同数字,大概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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值