Jump to content

CAPTCHA Reader Help

- - - - -

This topic has been archived. This means that you cannot reply to this topic.
6 replies to this topic

#1
BlaineSch

BlaineSch

    Writes binary right handed and hex left handed

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 2,448 posts
If you noticed I posted about wanting a CAPTCHA theory. I have it coded but the accuracy is a bit off (I estimated about 18.*% accuracy). I put up my source code and a few test images.

Here are some test images:
Posted Image
(my program generates: pyngm)

Posted Image
(my program generates: 428ej)

and the font images I generated are here:
Index of /uploads/capt/font_images

But those are already generated

If you want to just download all of this I zipped it for you:
http://www.blainesch...t/gifReader.zip

/*
    runner.java
    
    This is just the front end... the one you want to run.
    
    Simply declares the classes and starts it up
*/
import java.awt.AWTException;
import java.awt.Robot;
public class runner {
    public static void main(String[] args) throws InterruptedException, AWTException {
        gifReader myTasks = new gifReader();
        Robot myBot = new Robot();
        myTasks.splitLetters(myBot);
    }
}
/*
 gifReader.java
 This handles the current library, reading the image, and finding the closest match
*/
import java.awt.*;
import java.io.*;
public class gifReader {
    private int[] imageLocation = {9,164}; //x,y of the image top left
    private letterList[] myLetters; //captcha letters stored here
    private letterList[] fullAlpha; //full alphabet (36*21) stored here
    private boolean isBlack(Color y) {
        //a way of seeing if the pixel is black... we don't want to be "too" exact so it's based on 34
        if(y.getRed() <= 34 && y.getGreen() <= 34 && y.getBlue() <= 34) {
            return true;
        }
        return false;
    }
    gifReader() throws InterruptedException {
        //constructor initiates the variables and reads in the "letters.txt" file
        //assign variables
        myLetters = new letterList[7];
        fullAlpha = new letterList[756];
        
        //declare captcha letters
        for(int i = 0;i<myLetters.length;i++) {
            myLetters[i] = new letterList();
        }
        
        //load premade letters 20 angles 26 letters (and 10 numbers)
        try {
            String location = "D:\\School\\2010 Spring\\Intro to Java\\gifReader\\src\\letters.txt";
            BufferedReader in = new BufferedReader(new FileReader(location)); 
            String strLine; //string used for file reading
            int i = 0;
            while ((strLine = in.readLine()) != null)   {
                fullAlpha[i] = new letterList();
                int t = 2, a = -1, b = -1, c = -1, d = -1;
                fullAlpha[i].setName(strLine.substring(0, 1));
                while(strLine.indexOf(",",t) != -1) {
                    a = strLine.indexOf(",", t);
                    b = strLine.indexOf(",", a+1);
                    c = Integer.valueOf(strLine.substring(t, a)).intValue();
                    d = Integer.valueOf(strLine.substring(a+1, b)).intValue();
                    fullAlpha[i].addPixel(c, d);
                    t = b+1;
                }
                i++;
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    public void splitLetters(Robot myBot) throws InterruptedException {
        /*
        This class starts from the top of the image (defined in letterLocations)
        and finds the letters, if there is a 5 pixel space between the two black
        pixels we assume it's a new letter
        */
        int totalLetters = -1, spaced = 0;
        for(int ii = 1;ii<148;ii++) { //width of the image minus the black borders
            myBot.mouseMove(ii+imageLocation[0],imageLocation[1]);
            for(int i = 1;i<38;i++) { //height of the image minux the black borders
                if(isBlack(myBot.getPixelColor(ii+imageLocation[0],i+imageLocation[1]))) {
                    if(spaced > 5) { //the 5 pixels I mentioned earlier if you want to change this
                        totalLetters++;
                    }
                    myLetters[totalLetters].addPixel(ii, i); //add the pixel to the image
                    spaced = 0; //reset the number of spaces
                }
            }
            spaced++; //increase the number of spaces
        }
        for(int i = 0;i<myLetters.length;i++) {
            myLetters[i].decrementAll(); //decrement all of them
            findLetter(i); //and find the letter
        }
    }
    public void findLetter(int i) {
        /*
        After finding a current character it compares it against
        EVERY character and finds the highest match.
        */
        double t = 0.0, j = 0.0;
        int finalA = 0;
        for(int a = 0;a<fullAlpha.length;a++) {
            t = myLetters[i].checkLetter(fullAlpha[a]);
            if(t > j) {
                //if this beats the previous score store better scores
                j = t; //stores the score
                finalA = a; //stores which letter it was
            }
        }
        System.out.println(fullAlpha[finalA].getName()+":"+t); //outputs letter and score
        
    }
}
/*
letterList.java 
this class stores all the information on a specific character/letter
*/
import java.util.LinkedList;

public class letterList {
    public LinkedList<letterPixel> letterCords = new LinkedList<letterPixel>();
        //a LinkedList of all the pixels in the image
    private letterPixel t; //temporary pixel
    private String name; //name of the character (0,1,2,...)
    
    public void setName(String n) {
        //sets name
        this.name = n;
    }
    public String getName() {
        //gets name
        return this.name;
    }
    public void addPixel(int a, int b) {
        //adds a pixel to the character
        t = new letterPixel();
        t.set(a,b);
        letterCords.add(t);
    }
    public void showAll() {
        //shows all of the cords in the image
        if(this.name.length() >= 1) {
            //outputs the name if applicable
            System.out.print(this.name+",");
        }
        for(int i = 0;i<letterCords.size();i++) {
            //loop throught the linkedlist
            System.out.print(letterCords.get(i).getx()+","+letterCords.get(i).gety()+",");
        }
        System.out.println();
    }
    public void decrementAll() {
        //find the lowest x and the lowest y and subtract that from all
        int x = 700, y = 700; //assume the highest it will go is 700
        for(int i = 0;i<letterCords.size();i++) {
            //this section finds the lowest cord
            if(letterCords.get(i).getx() < x) {
                x = letterCords.get(i).getx();
            }
            if(letterCords.get(i).gety() < y) {
                y = letterCords.get(i).gety();
            }
        }
        for(int i = 0;i<letterCords.size();i++) {
            //this section subtracts the lowest
            letterCords.get(i).subtract(x, y);
        }
    }
    public double checkLetter(letterList b) {
        //this will check the current (this) object against 'b'
        double t1 = this.letterCords.size(); //we need the size for scaling
        double t2 = b.letterCords.size();
        double totalMatches = 0;
        if(t1*2 < t2 || t2*2 < t1) {
            //if either is half the size it is not the same character
            return totalMatches;
        }
        for(int i = 0;i<t2;i++) {
            if(contains(b.letterCords.get(i))) {
                //it is a match
                totalMatches++;
            }
        }
        return totalMatches;
    }
    private boolean contains(letterPixel a) {
        //goes through the current class and checks if a certain pixel
        //is already contained inside
        for(int i = 0;i<letterCords.size();i++) {
            if(letterCords.get(i).equals(a)) {
                return true;
            }
        }
        return false;
    }

}
/*
letterPixel.java
Very simple class to contain 1 pixel from each letter
*/
public class letterPixel {
    private int x,y; //values of the class
    letterPixel() {
        //defaults to -1
        x = y = -1;
    }
    public int getx() {
        //get x
        return x;
    }
    public int gety() {
        //get y
        return y;
    }
    public boolean isset() {
        //tests if the pixel is set
        if(x==-1 || y==-1) {
            return false;
        }
        return true;
    }
    public void set(int a, int b) {
        //sets them
        x=a;
        y=b;
    }
    public void subtract(int a, int b) {
        /*
        The point of this is to subtract
        Example:
            If the top left pixel is 30,20 we need to make
            it 0,0 so that it is comparable
        */
        x -= a;
        y -= b;
    }
    public boolean equals(letterPixel b) {
        //simply tests for equality
        if(this.x==b.x && this.y==b.y) {
            return true;
        }
        return false;
    }
}
/*
importLetter.java
I used this class to import characters 1 by 1
it would output the data and I would paste it into a file

After all characters were loaded I would save the file "letters.txt"
*/
import java.awt.*;

import javax.swing.JOptionPane;

public class importLetter {
    private static letterList[] partAlpha; //not 
    private static int[] imageLocation = {9,164}; //x,y of the image top left
    private static boolean isBlack(Color y) {
        /*
        Just check is the image is mostly black
        */
        if(y.getRed() <= 34 && y.getGreen() <= 34 && y.getBlue() <= 34) {
            return true;
        }
        return false;
    }
    public static void main(String[] args) throws AWTException {
        Robot myBot = new Robot(); //need this to move the mouse and get pixel colors
        
        partAlpha = new letterList[21]; //we did 21 different angles in the images
        
        String letter = JOptionPane.showInputDialog("What letter is this?");
            //the character is also stored so order would not matter
        
        for(int i = 0;i<partAlpha.length;i++) {
            //declares and sets the letter
            partAlpha[i] = new letterList();
            partAlpha[i].setName(letter);
        }
        
        /*
        Will start to find the image pixel by pixel and define it
            (more details in gifReader::splitLetters())
        */
        int totalLetters = -1, spaced = 0;
        for(int ii = 1;ii<661;ii++) {
            myBot.mouseMove(ii+imageLocation[0],imageLocation[1]);
            for(int i = 1;i<45;i++) {
                if(isBlack(myBot.getPixelColor(ii+imageLocation[0],i+imageLocation[1]))) {
                    if(spaced > 5) {
                        totalLetters++;
                    }
                    partAlpha[totalLetters].addPixel(ii, i);
                    spaced = 0;
                }
            }
            spaced++;
        }
        for(int i = 0;i<partAlpha.length;i++) {
            partAlpha[i].decrementAll();
            partAlpha[i].showAll();
        }
    }
}
Here is the "letters.txt" file you will need
0,0,10,0,11,0,12,0,13,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,4,2,5,2,6,2,7,2,8,2,15,2,16,3,3,3,4,3,5,3,16,4,2,4,3,4,16,4,17,5,1,5,2,5,16,5,17,6,1,6,16,7,0,7,1,7,15,7,16,8,0,8,1,8,14,8,15,9,1,9,12,9,13,9,14,10,1,10,2,10,9,10,10,10,11,10,12,10,13,11,2,11,3,11,4,11,5,11,6,11,7,11,8,11,9,11,10,12,4,12,5,12,6,12,7,
0,0,9,0,10,0,11,0,12,0,13,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,3,2,4,2,5,2,6,2,7,2,15,2,16,3,2,3,3,3,4,3,16,4,1,4,2,4,16,5,0,5,1,5,16,6,0,6,16,7,0,7,15,7,16,8,0,8,13,8,14,8,15,9,0,9,1,9,11,9,12,9,13,9,14,10,1,10,2,10,8,10,9,10,10,10,11,10,12,11,2,11,3,11,4,11,5,11,6,11,7,11,8,11,9,
0,0,8,0,9,0,10,0,11,0,12,0,13,1,5,1,6,1,7,1,8,1,9,1,10,1,13,1,14,1,15,2,3,2,4,2,5,2,6,2,15,3,1,3,2,3,3,3,16,4,0,4,1,4,16,5,0,5,16,6,0,6,15,6,16,7,0,7,15,8,0,8,13,8,14,8,15,9,0,9,1,9,10,9,11,9,12,9,13,10,1,10,2,10,3,10,6,10,7,10,8,10,9,10,10,10,11,11,2,11,3,11,4,11,5,11,6,11,7,11,8,
0,0,8,0,9,0,10,0,11,0,12,0,13,0,14,1,5,1,6,1,7,1,8,1,9,1,10,1,14,1,15,1,16,2,3,2,4,2,5,2,16,3,2,3,3,3,16,3,17,4,1,4,2,4,17,5,0,5,1,5,16,5,17,6,0,6,1,6,16,6,17,7,0,7,1,7,15,7,16,8,1,8,13,8,14,8,15,9,1,9,2,9,10,9,11,9,12,9,13,9,14,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,11,4,11,5,11,6,11,7,11,8,
0,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,1,3,1,4,1,5,1,6,1,7,1,8,1,14,1,15,2,2,2,3,2,4,2,15,2,16,3,1,3,2,3,16,4,0,4,1,4,16,5,0,5,16,6,0,6,16,7,0,7,15,7,16,8,1,8,13,8,14,8,15,9,1,9,2,9,9,9,10,9,11,9,12,9,13,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,
0,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,1,2,1,3,1,4,1,5,1,6,1,7,1,14,1,15,2,1,2,2,2,3,2,15,2,16,3,0,3,1,3,16,4,0,4,16,5,0,5,16,6,0,6,15,6,16,7,0,7,14,7,15,8,0,8,1,8,12,8,13,8,14,9,1,9,2,9,3,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,
0,0,9,0,10,0,11,0,12,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,3,2,4,2,5,2,6,2,15,2,16,3,1,3,2,3,3,3,16,3,17,4,1,4,17,5,0,5,1,5,17,6,0,6,1,6,17,7,1,7,16,7,17,8,1,8,15,8,16,9,1,9,2,9,12,9,13,9,14,9,15,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,11,5,11,6,11,7,11,8,11,9,
0,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,2,2,3,2,4,2,15,2,16,3,1,3,2,3,16,4,0,4,1,4,16,4,17,5,0,5,17,6,0,6,16,6,17,7,0,7,1,7,16,8,1,8,14,8,15,8,16,9,1,9,2,9,3,9,10,9,11,9,12,9,13,9,14,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,
0,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,11,1,12,1,13,1,14,1,15,2,1,2,2,2,3,2,15,2,16,3,0,3,1,3,16,4,0,4,16,5,0,5,16,6,0,6,16,7,0,7,1,7,15,7,16,8,1,8,2,8,14,8,15,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,
0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,1,1,2,1,3,1,4,1,5,1,12,1,13,1,14,1,15,2,0,2,1,2,15,2,16,3,0,3,16,4,0,4,16,5,0,5,16,6,0,6,16,7,0,7,1,7,15,7,16,8,1,8,2,8,13,8,14,8,15,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,5,10,6,10,7,10,8,10,9,10,10,
0,0,6,0,7,0,8,0,9,0,10,0,11,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,1,2,2,2,3,2,14,2,15,2,16,3,1,3,16,4,0,4,1,4,16,4,17,5,0,5,17,6,0,6,1,6,16,6,17,7,1,7,16,8,1,8,2,8,15,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,
0,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,1,2,2,2,14,2,15,2,16,3,0,3,1,3,16,4,0,4,16,4,17,5,0,5,17,6,0,6,1,6,16,6,17,7,0,7,1,7,16,8,1,8,2,8,15,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,
0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,1,1,2,1,3,1,11,1,12,1,13,1,14,2,0,2,1,2,14,2,15,2,16,3,0,3,16,4,0,4,16,5,0,5,16,6,0,6,1,6,16,7,1,7,16,8,1,8,2,8,3,8,14,8,15,8,16,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,6,10,7,10,8,10,9,10,10,10,11,10,12,
0,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,1,2,2,2,12,2,13,2,14,2,15,3,0,3,1,3,14,3,15,4,0,4,15,4,16,5,0,5,16,6,0,6,16,7,0,7,1,7,16,8,1,8,2,8,15,8,16,9,2,9,3,9,4,9,5,9,14,9,15,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,10,
0,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,1,1,2,1,3,1,4,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,0,2,1,2,12,2,13,2,14,2,15,3,0,3,14,3,15,4,0,4,15,4,16,5,0,5,16,6,0,6,16,7,0,7,1,7,16,8,1,8,2,8,3,8,15,9,2,9,3,9,4,9,5,9,6,9,7,9,13,9,14,9,15,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,
0,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,1,2,2,2,10,2,11,2,12,2,13,2,14,3,1,3,14,3,15,3,16,4,0,4,1,4,15,4,16,5,0,5,1,5,16,5,17,6,0,6,1,6,17,7,1,7,17,8,1,8,2,8,16,8,17,9,2,9,3,9,4,9,5,9,15,9,16,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,7,11,8,11,9,11,10,11,11,11,12,11,13,11,14,
0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,1,2,2,2,11,2,12,2,13,2,14,3,0,3,1,3,14,3,15,3,16,4,0,4,15,4,16,5,0,5,16,5,17,6,0,6,1,6,16,6,17,7,1,7,2,7,16,7,17,8,2,8,3,8,16,9,3,9,4,9,5,9,6,9,15,9,16,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,9,11,10,11,11,11,12,11,13,
0,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,1,1,2,1,9,1,10,1,11,1,12,1,13,2,0,2,1,2,12,2,13,2,14,3,0,3,14,3,15,3,16,4,0,4,15,4,16,5,0,5,16,6,0,6,1,6,16,7,1,7,2,7,16,8,2,8,3,8,4,8,16,9,3,9,4,9,5,9,6,9,7,9,8,9,14,9,15,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,
0,0,3,0,4,0,5,0,6,0,7,0,8,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,10,2,11,2,12,2,13,3,0,3,13,3,14,3,15,4,0,4,14,4,15,5,0,5,15,5,16,6,0,6,1,6,16,7,1,7,16,8,1,8,2,8,3,8,16,9,2,9,3,9,4,9,5,9,15,9,16,10,4,10,5,10,6,10,7,10,8,10,9,10,14,10,15,11,7,11,8,11,9,11,10,11,11,11,12,11,13,11,14,
0,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,8,1,9,1,10,1,11,1,12,2,0,2,1,2,11,2,12,2,13,3,0,3,13,3,14,3,15,4,0,4,15,5,0,5,15,5,16,6,0,6,1,6,16,7,1,7,2,7,16,8,2,8,3,8,4,8,16,9,3,9,4,9,5,9,6,9,15,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,8,11,9,11,10,11,11,11,12,11,13,
0,0,3,0,4,0,5,0,6,0,7,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,0,2,1,2,9,2,10,2,11,2,12,3,0,3,11,3,12,3,13,3,14,4,0,4,13,4,14,4,15,5,0,5,15,6,0,6,15,6,16,7,0,7,1,7,16,8,1,8,2,8,16,9,2,9,3,9,4,9,5,9,15,9,16,10,4,10,5,10,6,10,7,10,14,10,15,11,6,11,7,11,8,11,9,11,10,11,11,11,12,11,13,11,14,12,10,12,11,12,12,
1,0,3,0,15,1,2,1,3,1,12,1,13,1,14,1,15,1,16,2,2,2,3,2,10,2,11,2,12,2,13,3,2,3,7,3,8,3,9,3,10,4,1,4,2,4,4,4,5,4,6,4,7,4,8,5,1,5,2,5,3,5,4,5,5,6,0,6,1,6,2,
1,0,2,0,3,0,15,1,2,1,12,1,13,1,14,1,15,2,2,2,9,2,10,2,11,2,12,2,13,3,1,3,2,3,6,3,7,3,8,3,9,3,10,4,1,4,2,4,3,4,4,4,5,4,6,4,7,5,0,5,1,5,2,5,3,5,4,6,0,6,1,
1,0,3,1,3,1,16,2,3,2,12,2,13,2,14,2,15,2,16,3,2,3,3,3,9,3,10,3,11,3,12,3,13,3,14,4,2,4,5,4,6,4,7,4,8,4,9,4,10,5,1,5,2,5,3,5,4,5,5,5,6,5,7,6,0,6,1,6,2,6,3,
1,0,3,1,2,1,3,1,16,2,2,2,3,2,12,2,13,2,14,2,15,2,16,3,2,3,8,3,9,3,10,3,11,3,12,3,13,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,5,0,5,1,5,2,5,3,5,4,5,5,6,0,6,1,
1,0,2,0,3,1,2,1,15,2,2,2,11,2,12,2,13,2,14,2,15,3,1,3,2,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,4,0,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,5,0,5,1,5,2,5,3,
1,0,3,0,4,1,3,2,3,2,16,3,2,3,3,3,11,3,12,3,13,3,14,3,15,3,16,4,1,4,2,4,3,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,5,1,5,2,5,3,5,4,5,5,5,6,5,7,6,0,6,1,6,2,
1,0,3,1,3,2,2,2,3,2,16,3,1,3,2,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,5,0,5,1,5,2,5,3,5,4,5,5,
1,0,4,1,4,2,3,2,4,3,2,3,3,4,2,4,3,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,4,17,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,6,0,6,1,6,2,
1,0,4,1,3,1,4,2,3,3,2,3,3,3,16,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,5,0,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,
1,0,4,1,3,1,4,2,3,3,2,3,3,4,1,4,2,4,15,4,16,5,0,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,6,0,6,1,
1,0,4,0,5,1,4,2,3,2,4,3,2,3,3,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,4,17,5,0,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,5,17,
1,0,4,0,5,1,3,1,4,2,2,2,3,3,1,3,2,3,3,4,0,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,
1,0,4,0,5,1,4,2,3,2,4,3,2,3,3,4,0,4,1,4,2,4,3,5,0,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,6,11,6,12,6,13,6,14,6,15,6,16,
1,0,4,1,3,1,4,2,2,2,3,3,1,3,2,4,0,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,6,13,6,14,6,15,6,16,
1,0,5,0,6,1,4,1,5,2,3,2,4,3,2,3,3,4,0,4,1,4,2,4,3,4,4,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,15,6,16,6,17,7,15,7,16,
1,0,5,1,4,1,5,2,3,2,4,3,1,3,2,3,3,4,0,4,1,4,2,4,3,4,4,4,5,4,6,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,6,10,6,11,6,12,6,13,6,14,6,15,6,16,7,15,7,16,
1,0,5,0,6,1,4,1,5,2,3,2,4,3,2,3,3,4,0,4,1,4,2,4,3,5,2,5,3,5,4,5,5,5,6,5,7,5,8,6,6,6,7,6,8,6,9,6,10,6,11,6,12,6,13,7,11,7,12,7,13,7,14,7,15,7,16,8,16,
1,0,5,1,4,1,5,2,2,2,3,3,0,3,1,3,2,3,3,4,0,4,1,4,2,4,3,4,4,4,5,5,4,5,5,5,6,5,7,5,8,5,9,6,8,6,9,6,10,6,11,6,12,6,13,7,12,7,13,7,14,7,15,7,16,
1,0,5,1,4,1,5,2,3,2,4,3,1,3,2,3,3,4,0,4,1,4,2,4,3,5,2,5,3,5,4,5,5,5,6,5,7,6,6,6,7,6,8,6,9,6,10,7,9,7,10,7,11,7,12,7,13,7,14,8,13,8,14,8,15,
1,0,5,0,6,1,3,1,4,1,5,2,2,2,3,3,0,3,1,3,2,3,3,4,1,4,2,4,3,4,4,4,5,5,4,5,5,5,6,5,7,5,8,6,7,6,8,6,9,6,10,6,11,7,10,7,11,7,12,7,13,7,14,8,13,8,14,8,15,
1,0,5,1,4,1,5,2,2,2,3,2,4,3,0,3,1,3,2,4,0,4,1,4,2,4,3,5,2,5,3,5,4,5,5,5,6,6,5,6,6,6,7,6,8,6,9,7,8,7,9,7,10,7,11,8,11,8,12,8,13,8,14,9,13,9,14,9,15,
2,0,14,1,13,1,14,1,15,2,13,2,14,2,15,3,12,3,13,3,15,4,12,4,15,4,16,5,2,5,3,5,11,5,12,5,15,5,16,6,1,6,2,6,3,6,11,6,16,7,1,7,10,7,11,7,16,7,17,8,0,8,1,8,10,8,11,8,17,9,0,9,1,9,10,9,17,10,0,10,1,10,9,10,10,10,17,10,18,11,1,11,9,12,1,12,2,12,8,12,9,13,2,13,3,13,6,13,7,13,8,14,3,14,4,14,5,14,6,14,7,
2,0,14,1,13,1,14,2,12,2,13,2,14,2,15,3,12,3,13,3,15,4,11,4,12,4,15,5,1,5,2,5,11,5,12,5,15,5,16,6,1,6,2,6,11,6,16,7,0,7,1,7,10,7,11,7,16,8,0,8,10,8,16,8,17,9,0,9,9,9,10,9,17,10,0,10,9,10,17,11,0,11,1,11,8,11,9,12,1,12,2,12,7,12,8,13,2,13,3,13,4,13,5,13,6,13,7,14,3,14,4,14,5,14,6,
2,0,14,1,13,1,14,2,12,2,13,2,14,2,15,3,12,3,14,3,15,4,2,4,11,4,12,4,15,5,1,5,2,5,11,5,15,6,0,6,1,6,10,6,11,6,15,6,16,7,0,7,10,7,16,8,0,8,9,8,10,8,16,9,0,9,9,9,16,9,17,10,0,10,8,10,9,10,16,10,17,11,0,11,1,11,7,11,8,12,1,12,2,12,6,12,7,12,8,13,2,13,3,13,4,13,5,13,6,13,7,14,4,
2,0,15,1,14,1,15,2,13,2,14,2,15,2,16,3,12,3,13,3,15,3,16,4,2,4,3,4,12,4,13,4,15,4,16,5,1,5,2,5,11,5,12,5,16,6,1,6,11,6,16,6,17,7,0,7,1,7,10,7,11,7,16,7,17,8,0,8,1,8,10,8,16,8,17,9,0,9,1,9,9,9,10,9,17,10,1,10,8,10,9,10,17,10,18,11,1,11,2,11,8,11,9,12,2,12,3,12,6,12,7,12,8,13,3,13,4,13,5,13,6,13,7,
2,0,15,1,14,1,15,2,13,2,14,2,15,3,3,3,12,3,13,3,15,3,16,4,1,4,2,4,3,4,12,4,15,4,16,5,1,5,2,5,11,5,12,5,16,6,0,6,1,6,10,6,11,6,16,7,0,7,10,7,11,7,16,8,0,8,9,8,10,8,16,8,17,9,0,9,9,9,16,9,17,10,0,10,1,10,8,10,9,10,17,11,1,11,2,11,7,11,8,12,2,12,3,12,4,12,5,12,6,12,7,13,3,13,4,13,5,
2,0,15,1,14,1,15,2,13,2,14,2,15,3,2,3,3,3,12,3,13,3,15,4,1,4,2,4,11,4,12,4,15,4,16,5,0,5,1,5,11,5,15,5,16,6,0,6,10,6,11,6,15,6,16,7,0,7,9,7,10,7,16,8,0,8,9,8,10,8,16,9,0,9,8,9,9,9,16,10,0,10,1,10,7,10,8,10,16,10,17,11,1,11,2,11,6,11,7,12,2,12,3,12,4,12,5,12,6,
2,0,16,1,14,1,15,1,16,2,13,2,14,2,15,2,16,3,2,3,3,3,4,3,13,3,14,3,16,4,1,4,2,4,12,4,13,4,16,5,1,5,11,5,12,5,16,5,17,6,0,6,1,6,11,6,16,6,17,7,0,7,1,7,10,7,11,7,16,7,17,8,1,8,9,8,10,8,17,9,1,9,8,9,9,9,17,10,1,10,2,10,7,10,8,10,9,10,17,11,2,11,3,11,4,11,5,11,6,11,7,11,8,12,3,12,4,12,5,12,6,
2,0,16,1,14,1,15,1,16,2,3,2,13,2,14,2,15,2,16,3,1,3,2,3,3,3,12,3,13,3,16,4,1,4,12,4,16,5,0,5,1,5,11,5,12,5,16,6,0,6,10,6,11,6,16,7,0,7,10,7,16,7,17,8,0,8,1,8,9,8,10,8,16,8,17,9,1,9,8,9,9,9,16,9,17,10,1,10,2,10,6,10,7,10,8,10,16,10,17,11,2,11,3,11,4,11,5,11,6,11,7,12,4,
2,0,15,0,16,1,14,1,15,1,16,2,2,2,3,2,13,2,14,2,15,2,16,3,1,3,2,3,12,3,13,3,15,3,16,4,0,4,1,4,11,4,12,4,16,5,0,5,11,5,16,6,0,6,10,6,11,6,16,7,0,7,9,7,10,7,16,8,0,8,8,8,9,8,16,9,0,9,1,9,7,9,8,9,16,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,16,11,2,11,3,11,4,11,5,11,6,
2,0,15,0,16,1,2,1,3,1,14,1,15,1,16,2,1,2,2,2,3,2,13,2,14,2,15,2,16,3,0,3,1,3,12,3,13,3,15,3,16,4,0,4,11,4,12,4,15,4,16,5,0,5,10,5,11,5,15,5,16,6,0,6,9,6,10,6,15,6,16,7,0,7,8,7,9,7,15,7,16,8,0,8,7,8,8,8,9,8,16,9,0,9,1,9,6,9,7,9,8,9,16,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,16,11,3,11,4,11,5,
2,0,17,1,3,1,4,1,15,1,16,1,17,2,2,2,3,2,4,2,14,2,15,2,16,2,17,3,1,3,2,3,13,3,14,3,15,3,16,3,17,4,1,4,12,4,13,4,17,5,0,5,1,5,11,5,12,5,17,6,0,6,11,6,12,6,17,7,0,7,1,7,10,7,11,7,17,8,1,8,8,8,9,8,10,8,17,9,1,9,2,9,7,9,8,9,9,9,17,10,2,10,3,10,4,10,5,10,6,10,7,10,17,11,4,11,5,11,17,
2,0,3,0,4,0,16,0,17,1,2,1,3,1,4,1,14,1,15,1,16,1,17,2,1,2,2,2,13,2,14,2,15,2,16,2,17,3,0,3,1,3,12,3,13,3,16,4,0,4,11,4,12,4,16,5,0,5,10,5,11,5,16,6,0,6,9,6,10,6,16,7,0,7,1,7,8,7,9,7,16,8,1,8,2,8,7,8,8,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,16,10,3,10,4,10,5,10,16,
2,0,2,0,3,0,4,0,16,0,17,1,1,1,2,1,14,1,15,1,16,2,0,2,1,2,13,2,14,2,15,2,16,3,0,3,12,3,13,3,16,4,0,4,11,4,12,4,16,5,0,5,10,5,11,5,16,6,0,6,9,6,10,6,16,7,0,7,1,7,7,7,8,7,9,7,16,8,1,8,2,8,6,8,7,8,8,8,16,9,2,9,3,9,4,9,5,9,6,9,15,9,16,10,15,10,16,
2,0,3,0,4,1,1,1,2,1,3,1,4,1,15,1,16,2,0,2,1,2,14,2,15,2,16,3,0,3,12,3,13,3,14,3,15,3,16,4,0,4,11,4,12,4,13,4,16,5,0,5,10,5,11,5,16,6,0,6,9,6,10,6,15,6,16,7,0,7,8,7,9,7,15,7,16,8,0,8,1,8,7,8,8,8,15,8,16,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,15,9,16,10,2,10,3,10,4,10,5,10,15,10,16,11,15,
2,0,3,0,4,0,5,1,2,1,3,1,16,1,17,2,1,2,2,2,14,2,15,2,16,2,17,3,1,3,13,3,14,3,15,3,16,3,17,4,1,4,12,4,13,4,17,5,0,5,1,5,11,5,12,5,16,5,17,6,1,6,10,6,11,6,16,6,17,7,1,7,8,7,9,7,10,7,16,7,17,8,1,8,2,8,3,8,6,8,7,8,8,8,9,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,16,10,16,11,16,
2,0,4,0,5,1,2,1,3,1,4,1,5,2,1,2,2,2,16,2,17,3,1,3,14,3,15,3,16,3,17,4,0,4,1,4,13,4,14,4,16,4,17,5,0,5,12,5,13,5,16,5,17,6,0,6,1,6,10,6,11,6,12,6,16,6,17,7,0,7,1,7,9,7,10,7,16,8,1,8,2,8,7,8,8,8,9,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,16,10,3,10,4,10,5,10,6,10,15,10,16,11,15,11,16,12,15,12,16,
2,0,2,0,3,0,4,0,5,1,1,1,2,1,3,2,1,2,16,2,17,3,0,3,1,3,14,3,15,3,16,3,17,4,0,4,12,4,13,4,14,4,16,4,17,5,0,5,11,5,12,5,16,5,17,6,0,6,1,6,10,6,11,6,16,7,0,7,1,7,8,7,9,7,10,7,16,8,1,8,2,8,3,8,6,8,7,8,8,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,15,9,16,10,15,10,16,11,15,12,15,
2,0,3,0,4,0,5,1,2,1,3,1,4,1,5,2,1,2,2,3,0,3,1,3,15,3,16,3,17,4,0,4,13,4,14,4,15,4,16,4,17,5,0,5,12,5,13,5,14,5,16,5,17,6,0,6,10,6,11,6,12,6,16,6,17,7,0,7,1,7,9,7,10,7,11,7,16,8,1,8,2,8,7,8,8,8,9,8,16,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,15,9,16,10,3,10,4,10,5,10,6,10,15,10,16,11,15,12,15,13,14,13,15,
2,0,2,0,3,0,4,0,5,1,1,1,2,1,3,2,1,3,0,3,15,3,16,3,17,4,0,4,13,4,14,4,15,4,16,4,17,5,0,5,11,5,12,5,13,5,16,5,17,6,0,6,10,6,11,6,12,6,16,7,0,7,1,7,8,7,9,7,10,7,16,8,1,8,2,8,6,8,7,8,8,8,15,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,15,10,15,11,14,11,15,12,14,12,15,
2,0,3,0,4,0,5,1,2,1,3,1,4,1,5,2,1,2,2,3,0,3,1,4,0,4,14,4,15,4,16,4,17,5,0,5,12,5,13,5,14,5,15,5,16,5,17,6,0,6,11,6,12,6,13,6,16,7,0,7,9,7,10,7,11,7,16,8,0,8,1,8,7,8,8,8,9,8,15,8,16,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,15,9,16,10,3,10,4,10,5,10,15,11,14,11,15,12,14,12,15,13,14,
2,0,2,0,3,0,4,0,5,1,1,1,2,2,0,2,1,3,0,4,0,4,14,4,15,4,16,4,17,5,0,5,12,5,13,5,14,5,15,5,16,5,17,6,0,6,10,6,11,6,12,6,16,7,0,7,1,7,8,7,9,7,10,7,15,7,16,8,0,8,1,8,2,8,6,8,7,8,8,8,9,8,15,8,16,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,15,10,14,10,15,11,14,11,15,12,14,13,13,13,14,
3,0,11,0,12,0,13,0,14,1,14,1,15,2,15,2,16,3,2,3,16,4,1,4,2,4,16,4,17,5,1,5,16,5,17,6,0,6,1,6,8,6,16,6,17,7,0,7,1,7,8,7,16,8,0,8,1,8,8,8,9,8,14,8,15,8,16,9,1,9,7,9,8,9,10,9,11,9,12,9,13,9,14,9,15,10,1,10,2,10,7,10,11,10,12,10,13,11,2,11,3,11,4,11,5,11,6,11,7,12,4,12,5,
3,0,11,0,12,0,13,0,14,1,14,1,15,2,15,2,16,3,2,3,16,4,1,4,2,4,16,5,0,5,1,5,16,6,0,6,7,6,8,6,16,7,0,7,8,7,15,7,16,8,0,8,7,8,8,8,9,8,14,8,15,9,1,9,7,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,1,10,2,10,6,10,7,10,11,10,12,10,13,11,2,11,3,11,4,11,5,11,6,
3,0,11,0,12,0,13,0,14,1,14,1,15,2,15,3,1,3,2,3,16,4,0,4,1,4,16,5,0,5,7,5,16,6,0,6,7,6,16,7,0,7,7,7,8,7,15,7,16,8,0,8,7,8,8,8,9,8,14,8,15,9,0,9,1,9,6,9,7,9,9,9,10,9,11,9,12,9,13,9,14,10,1,10,2,10,3,10,4,10,5,10,6,10,11,10,12,11,2,11,3,11,4,11,5,
3,0,12,1,12,1,13,1,14,1,15,2,15,2,16,3,2,3,16,4,1,4,2,4,3,4,16,4,17,5,1,5,17,6,0,6,1,6,8,6,17,7,0,7,1,7,8,7,16,7,17,8,0,8,1,8,8,8,9,8,15,8,16,9,1,9,7,9,8,9,9,9,10,9,14,9,15,9,16,10,1,10,2,10,6,10,7,10,10,10,11,10,12,10,13,10,14,10,15,11,2,11,3,11,4,11,5,11,6,11,7,12,4,
3,0,12,0,13,1,12,1,13,1,14,1,15,2,15,2,16,3,1,3,2,3,16,4,1,4,2,4,16,5,0,5,1,5,16,6,0,6,7,6,8,6,16,7,0,7,7,7,8,7,16,8,0,8,7,8,8,8,9,8,15,8,16,9,1,9,7,9,9,9,10,9,13,9,14,9,15,10,1,10,2,10,3,10,5,10,6,10,7,10,10,10,11,10,12,10,13,10,14,11,2,11,3,11,4,11,5,11,6,
3,0,12,0,13,1,12,1,13,1,14,1,15,2,2,2,14,2,15,3,1,3,2,3,15,3,16,4,0,4,1,4,16,5,0,5,7,5,16,6,0,6,7,6,16,7,0,7,7,7,8,7,16,8,0,8,7,8,8,8,15,8,16,9,0,9,1,9,6,9,7,9,9,9,10,9,13,9,14,9,15,10,1,10,2,10,3,10,4,10,5,10,6,10,10,10,11,10,12,10,13,10,14,11,3,11,4,11,5,
3,0,13,0,14,1,13,1,14,1,15,2,2,2,3,2,15,2,16,3,1,3,2,3,16,3,17,4,1,4,17,5,0,5,1,5,8,5,17,6,0,6,1,6,8,6,17,7,1,7,8,7,16,7,17,8,1,8,7,8,8,8,9,8,15,8,16,9,1,9,2,9,3,9,6,9,7,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,2,10,3,10,4,10,5,10,6,10,10,10,11,10,12,10,13,10,14,
3,0,13,0,14,1,3,1,13,1,14,1,15,2,1,2,2,2,3,2,15,2,16,3,1,3,16,4,0,4,1,4,16,4,17,5,0,5,8,5,17,6,0,6,8,6,16,6,17,7,0,7,1,7,7,7,8,7,16,8,1,8,6,8,7,8,8,8,9,8,15,8,16,9,1,9,2,9,3,9,4,9,5,9,6,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,3,10,4,10,5,10,10,10,11,10,12,10,13,10,14,
3,0,13,0,14,1,2,1,3,1,13,1,14,1,15,2,1,2,2,2,15,2,16,3,0,3,1,3,16,4,0,4,16,5,0,5,7,5,16,6,0,6,7,6,8,6,16,7,0,7,1,7,7,7,8,7,15,7,16,8,1,8,2,8,6,8,8,8,9,8,14,8,15,9,2,9,3,9,4,9,5,9,6,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,11,10,12,10,13,
3,0,2,0,3,0,12,0,13,0,14,1,1,1,2,1,3,1,14,1,15,2,0,2,1,2,15,2,16,3,0,3,16,4,0,4,7,4,16,5,0,5,7,5,16,6,0,6,7,6,16,7,0,7,1,7,6,7,7,7,8,7,15,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,8,8,9,8,14,8,15,9,2,9,3,9,4,9,5,9,9,9,10,9,11,9,12,9,13,9,14,10,11,10,12,
3,0,3,0,13,0,14,1,2,1,3,1,13,1,14,1,15,2,1,2,2,2,15,2,16,3,1,3,16,4,0,4,1,4,8,4,16,4,17,5,0,5,7,5,8,5,17,6,1,6,7,6,8,6,16,7,1,7,6,7,7,7,8,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,9,8,15,8,16,9,3,9,4,9,5,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,11,10,12,10,13,
3,0,3,0,13,1,2,1,3,1,4,1,13,1,14,1,15,2,1,2,2,2,15,2,16,3,0,3,1,3,16,4,0,4,8,4,16,4,17,5,0,5,8,5,17,6,0,6,1,6,7,6,8,6,16,6,17,7,1,7,7,7,8,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,8,8,9,8,15,8,16,9,2,9,3,9,4,9,5,9,9,9,10,9,11,9,13,9,14,9,15,10,10,10,11,10,12,10,13,10,14,
3,0,2,0,3,0,13,0,14,1,1,1,2,1,13,1,14,1,15,2,0,2,1,2,15,2,16,3,0,3,16,4,0,4,7,4,8,4,16,5,0,5,7,5,16,6,0,6,1,6,7,6,8,6,16,7,1,7,2,7,6,7,7,7,8,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,8,8,9,8,15,8,16,9,3,9,4,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,10,10,11,10,12,10,13,10,14,
3,0,3,1,1,1,2,1,3,1,13,1,14,2,0,2,1,2,13,2,14,2,15,3,0,3,15,3,16,4,0,4,16,5,0,5,7,5,16,6,0,6,7,6,16,7,0,7,1,7,6,7,7,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,8,8,15,8,16,9,2,9,3,9,4,9,5,9,8,9,9,9,14,9,15,10,9,10,10,10,11,10,12,10,13,10,14,11,10,11,11,11,12,11,13,
3,0,2,0,3,1,1,1,2,1,13,1,14,2,0,2,1,2,13,2,14,2,15,3,0,3,15,3,16,4,0,4,7,4,16,5,0,5,7,5,16,6,0,6,6,6,7,6,16,7,0,7,1,7,5,7,6,7,7,7,16,8,1,8,2,8,3,8,4,8,5,8,7,8,8,8,15,8,16,9,3,9,4,9,8,9,9,9,14,9,15,10,9,10,10,10,11,10,12,10,13,10,14,11,11,11,12,
3,0,4,1,2,1,3,1,4,2,1,2,2,2,14,2,15,3,1,3,15,3,16,4,0,4,1,4,16,4,17,5,0,5,1,5,8,5,16,5,17,6,0,6,1,6,8,6,17,7,1,7,7,7,8,7,17,8,1,8,2,8,3,8,5,8,6,8,7,8,8,8,16,8,17,9,2,9,3,9,4,9,5,9,8,9,9,9,16,10,9,10,10,10,14,10,15,10,16,11,10,11,11,11,12,11,13,11,14,
3,0,3,0,4,1,1,1,2,1,3,2,1,2,14,2,15,3,0,3,1,3,15,3,16,4,0,4,16,5,0,5,8,5,16,5,17,6,0,6,1,6,7,6,8,6,16,6,17,7,1,7,2,7,6,7,7,7,8,7,16,7,17,8,2,8,3,8,4,8,5,8,6,8,8,8,16,9,4,9,8,9,9,9,15,9,16,10,9,10,10,10,11,10,13,10,14,10,15,11,10,11,11,11,12,11,13,11,14,
3,0,4,1,2,1,3,1,4,2,1,2,2,2,14,3,0,3,1,3,14,3,15,4,0,4,15,4,16,5,0,5,8,5,16,6,0,6,7,6,8,6,16,7,0,7,1,7,7,7,16,8,1,8,2,8,3,8,5,8,6,8,7,8,8,8,16,9,2,9,3,9,4,9,5,9,8,9,16,10,8,10,9,10,15,11,9,11,10,11,11,11,12,11,13,11,14,11,15,12,10,12,11,12,12,12,13,
3,0,2,0,3,0,4,1,1,1,2,1,3,2,1,2,14,3,0,3,14,3,15,4,0,4,15,4,16,5,0,5,7,5,8,5,16,6,0,6,1,6,7,6,16,7,1,7,2,7,6,7,7,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,16,9,3,9,4,9,7,9,8,9,15,9,16,10,8,10,9,10,14,10,15,11,9,11,10,11,11,11,12,11,13,11,14,12,11,12,12,
3,0,4,1,2,1,3,1,4,2,1,2,2,3,0,3,1,3,14,4,0,4,14,4,15,5,0,5,15,5,16,6,0,6,7,6,16,7,0,7,1,7,6,7,7,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,16,9,2,9,3,9,4,9,5,9,7,9,16,10,7,10,8,10,15,11,8,11,9,11,13,11,14,11,15,12,9,12,10,12,11,12,12,12,13,12,14,
3,0,2,0,3,0,4,0,5,1,1,1,2,1,3,2,0,2,1,3,0,3,14,4,0,4,14,4,15,5,0,5,7,5,8,5,15,5,16,6,0,6,7,6,16,7,0,7,1,7,2,7,6,7,7,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,16,9,7,9,15,9,16,10,7,10,8,10,14,10,15,11,8,11,9,11,10,11,12,11,13,11,14,12,9,12,10,12,11,12,12,12,13,
4,0,9,1,8,1,9,2,7,2,8,2,9,2,10,3,6,3,7,3,10,4,6,4,10,5,5,5,10,5,11,6,4,6,5,6,11,6,15,6,16,7,4,7,11,7,12,7,13,7,14,7,15,7,16,8,3,8,10,8,11,8,12,8,13,9,2,9,3,9,7,9,8,9,9,9,10,9,11,9,12,10,1,10,2,10,4,10,5,10,6,10,7,10,8,10,12,10,13,11,1,11,2,11,3,11,4,11,5,11,12,12,0,12,1,12,2,
4,0,8,0,9,1,7,1,8,1,9,2,7,2,9,2,10,3,6,3,9,3,10,4,5,4,6,4,10,5,4,5,5,5,10,6,4,6,10,6,11,6,15,7,3,7,11,7,12,7,13,7,14,7,15,7,16,8,2,8,3,8,9,8,10,8,11,8,12,8,13,9,1,9,2,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,12,11,0,11,1,11,2,11,3,11,4,11,12,12,0,12,1,
4,0,9,0,10,1,8,1,9,1,10,2,7,2,8,2,10,3,7,3,10,3,11,4,6,4,11,5,5,5,11,6,4,6,5,6,11,6,12,6,16,7,3,7,4,7,11,7,12,7,13,7,14,7,15,7,16,8,3,8,9,8,10,8,11,8,12,8,13,8,14,9,2,9,5,9,6,9,7,9,8,9,9,9,10,9,12,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,12,10,13,11,0,11,1,11,2,11,3,
4,0,9,0,10,1,8,1,9,1,10,2,7,2,8,2,10,3,6,3,7,3,10,3,11,4,5,4,6,4,10,4,11,5,4,5,5,5,11,6,4,6,11,6,16,7,3,7,11,7,12,7,13,7,14,7,15,7,16,8,2,8,8,8,9,8,10,8,11,8,12,8,13,9,1,9,2,9,4,9,5,9,6,9,7,9,8,9,9,9,11,9,12,10,0,10,1,10,2,10,3,10,4,10,5,10,12,11,0,11,1,
4,0,8,0,9,0,10,1,7,1,8,1,9,1,10,2,7,2,10,3,6,3,10,4,5,4,10,4,11,5,4,5,10,5,11,6,3,6,11,6,15,7,2,7,10,7,11,7,12,7,13,7,14,7,15,7,16,8,1,8,2,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,11,9,12,10,0,10,1,10,2,10,3,10,11,10,12,
4,0,9,0,10,0,11,1,8,1,9,1,10,1,11,2,7,2,8,2,11,3,6,3,7,3,11,4,5,4,6,4,11,5,4,5,5,5,11,5,12,6,3,6,4,6,11,6,12,6,16,7,2,7,3,7,10,7,11,7,12,7,13,7,14,7,15,7,16,8,1,8,2,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,12,10,0,10,1,10,12,
4,0,10,1,9,1,10,1,11,2,8,2,10,2,11,3,7,3,10,3,11,4,6,4,11,5,4,5,5,5,11,6,3,6,4,6,11,7,2,7,3,7,11,7,12,7,16,8,1,8,2,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,0,10,1,10,2,10,3,10,4,10,5,10,11,10,12,11,12,
4,0,11,1,9,1,10,1,11,1,12,2,8,2,9,2,11,2,12,3,7,3,8,3,11,3,12,4,6,4,7,4,11,4,12,5,5,5,6,5,12,6,4,6,12,7,3,7,12,8,1,8,2,8,3,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,0,10,1,10,2,10,12,11,12,11,13,
4,0,10,0,11,1,9,1,10,1,11,2,8,2,9,2,11,2,12,3,7,3,11,3,12,4,5,4,6,4,11,4,12,5,4,5,5,5,11,5,12,6,3,6,4,6,11,6,12,7,2,7,11,7,12,7,16,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,11,9,12,10,12,11,12,
4,0,10,0,11,1,9,1,10,1,11,2,7,2,8,2,11,3,6,3,7,3,11,4,5,4,11,5,3,5,4,5,11,5,12,6,2,6,3,6,11,6,12,7,1,7,2,7,11,7,12,7,15,7,16,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,9,0,9,11,9,12,10,11,10,12,11,11,11,12,
4,0,12,1,10,1,11,1,12,2,9,2,10,2,12,3,7,3,8,3,12,4,6,4,7,4,12,5,4,5,5,5,12,6,3,6,4,6,12,7,1,7,2,7,3,7,12,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,9,17,10,12,11,12,
4,0,12,1,10,1,11,1,12,2,8,2,9,2,10,2,12,3,7,3,8,3,12,4,5,4,6,4,12,5,4,5,5,5,12,6,2,6,3,6,12,7,1,7,2,7,12,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,12,11,12,
4,0,11,0,12,1,9,1,10,1,11,1,12,2,8,2,9,2,12,3,6,3,7,3,12,4,5,4,6,4,12,5,3,5,4,5,12,6,1,6,2,6,11,6,12,7,0,7,1,7,2,7,3,7,4,7,11,7,12,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,9,11,9,12,9,13,9,14,9,15,9,16,10,11,10,12,11,11,
4,0,12,0,13,1,10,1,11,1,12,1,13,2,8,2,9,2,13,3,6,3,7,3,8,3,13,4,5,4,6,4,12,4,13,5,3,5,4,5,12,5,13,6,1,6,2,6,3,6,12,6,13,7,0,7,1,7,2,7,3,7,4,7,5,7,6,7,7,7,8,7,9,7,12,7,13,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,12,9,13,9,14,9,15,9,16,9,17,10,12,11,12,
4,0,11,0,12,0,13,1,9,1,10,1,11,1,12,1,13,2,7,2,8,2,9,2,13,3,5,3,6,3,7,3,12,3,13,4,3,4,4,4,5,4,12,4,13,5,1,5,2,5,3,5,12,6,0,6,1,6,2,6,3,6,4,6,12,7,1,7,2,7,3,7,4,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,9,11,9,12,9,15,9,16,10,11,10,12,11,12,
4,0,11,0,12,0,13,1,8,1,9,1,10,1,12,1,13,2,6,2,7,2,8,2,12,2,13,3,4,3,5,3,6,3,12,3,13,4,2,4,3,4,4,4,12,5,0,5,1,5,2,5,3,5,12,6,0,6,1,6,2,6,3,6,4,6,5,6,6,6,12,7,4,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,8,10,8,11,8,12,8,13,8,14,8,15,8,16,9,11,9,12,9,16,10,11,
4,0,12,0,13,1,10,1,11,1,12,1,13,2,8,2,9,2,12,2,13,3,5,3,6,3,7,3,12,3,13,4,3,4,4,4,5,4,12,5,1,5,2,5,12,6,0,6,1,6,2,6,3,6,12,7,2,7,3,7,4,7,5,7,6,7,7,7,8,7,11,7,12,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,9,11,9,12,9,13,9,14,9,15,9,16,10,11,10,16,11,11,
4,0,12,0,13,1,9,1,10,1,11,1,12,1,13,2,6,2,7,2,8,2,9,2,12,2,13,3,4,3,5,3,6,3,12,3,13,4,1,4,2,4,3,4,12,5,0,5,1,5,2,5,12,6,0,6,1,6,2,6,3,6,4,6,5,6,11,6,12,7,4,7,5,7,6,7,7,7,8,7,9,7,11,7,12,8,8,8,9,8,10,8,11,8,12,8,13,9,10,9,11,9,12,9,13,9,14,9,15,10,10,10,11,11,10,11,11,
4,0,12,0,13,0,14,1,9,1,10,1,11,1,12,1,13,1,14,2,6,2,7,2,8,2,9,2,13,2,14,3,3,3,4,3,5,3,6,3,13,4,1,4,2,4,3,4,13,5,0,5,1,5,2,5,3,5,4,5,12,5,13,6,3,6,4,6,5,6,6,6,7,6,8,6,12,6,13,7,7,7,8,7,9,7,10,7,11,7,12,8,10,8,11,8,12,8,13,8,14,8,15,9,11,9,12,9,13,9,14,9,15,9,16,10,11,
4,0,11,0,12,0,13,0,14,1,8,1,9,1,10,1,11,1,13,1,14,2,5,2,6,2,7,2,13,2,14,3,1,3,2,3,3,3,4,3,13,4,0,4,1,4,2,4,3,4,12,4,13,5,2,5,3,5,4,5,5,5,6,5,12,5,13,6,5,6,6,6,7,6,8,6,9,6,12,7,8,7,9,7,10,7,11,7,12,8,11,8,12,8,13,8,14,8,15,9,11,9,14,9,15,9,16,10,11,
4,0,10,0,11,0,12,0,13,0,14,1,6,1,7,1,8,1,9,1,10,1,13,1,14,2,3,2,4,2,5,2,6,2,13,3,0,3,1,3,2,3,3,3,13,4,0,4,1,4,2,4,3,4,4,4,12,4,13,5,3,5,4,5,5,5,6,5,7,5,12,6,6,6,7,6,8,6,9,6,10,6,11,6,12,7,9,7,10,7,11,7,12,8,11,8,12,8,13,8,14,8,15,9,10,9,11,9,14,9,15,10,10,10,11,
5,0,11,0,12,0,13,0,14,1,13,1,14,1,15,2,6,2,15,2,16,3,4,3,5,3,6,3,7,3,16,4,2,4,3,4,4,4,6,4,16,5,1,5,2,5,3,5,6,5,16,6,0,6,1,6,6,6,16,7,0,7,1,7,6,7,7,7,15,7,16,8,0,8,1,8,7,8,14,8,15,8,16,9,1,9,7,9,8,9,9,9,12,9,13,9,14,9,15,10,1,10,2,10,8,10,9,10,10,10,11,10,12,10,13,11,1,11,2,12,2,13,2,13,3,
5,0,12,0,13,0,14,0,15,1,14,1,15,1,16,2,6,2,7,2,16,3,4,3,5,3,6,3,7,3,16,3,17,4,2,4,3,4,4,4,5,4,7,4,17,5,1,5,2,5,3,5,7,5,17,6,0,6,1,6,7,6,17,7,1,7,7,7,16,7,17,8,1,8,2,8,7,8,8,8,15,8,16,9,1,9,2,9,8,9,9,9,10,9,13,9,14,9,15,10,2,10,9,10,10,10,11,10,12,10,13,10,14,11,2,11,3,12,2,12,3,
5,0,12,0,13,0,14,1,7,1,14,1,15,1,16,2,5,2,6,2,7,2,16,3,3,3,4,3,5,3,6,3,7,3,16,4,1,4,2,4,3,4,4,4,7,4,17,5,0,5,1,5,2,5,6,5,7,5,17,6,0,6,1,6,6,6,7,6,16,6,17,7,1,7,7,7,16,8,1,8,7,8,8,8,15,8,16,9,1,9,2,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,1,10,2,10,9,10,10,10,11,10,12,10,13,11,2,12,2,12,3,
5,0,12,1,12,1,13,1,14,2,6,2,7,2,14,2,15,3,4,3,5,3,6,3,7,3,15,3,16,4,2,4,3,4,4,4,5,4,6,4,7,4,16,5,0,5,1,5,2,5,6,5,16,6,0,6,1,6,6,6,16,7,0,7,1,7,6,7,7,7,16,8,0,8,1,8,6,8,7,8,15,8,16,9,1,9,7,9,8,9,14,9,15,10,1,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,1,11,2,11,9,11,10,11,11,11,12,11,13,12,1,12,2,
5,0,12,1,12,1,13,1,14,2,5,2,6,2,7,2,14,2,15,3,3,3,4,3,5,3,6,3,7,3,15,3,16,4,1,4,2,4,3,4,6,4,16,5,0,5,1,5,6,5,16,6,0,6,6,6,16,7,0,7,6,7,16,8,0,8,1,8,6,8,7,8,15,8,16,9,0,9,1,9,7,9,8,9,13,9,14,9,15,10,1,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,1,11,9,11,10,11,11,11,12,12,1,
5,0,13,0,14,1,13,1,14,1,15,2,5,2,6,2,7,2,8,2,15,2,16,3,3,3,4,3,5,3,6,3,7,3,16,4,0,4,1,4,2,4,3,4,7,4,17,5,0,5,1,5,7,5,17,6,1,6,7,6,17,7,1,7,7,7,16,7,17,8,1,8,7,8,8,8,15,8,16,9,1,9,2,9,7,9,8,9,9,9,14,9,15,9,16,10,1,10,2,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,1,11,2,11,11,11,12,
5,0,13,0,14,1,7,1,13,1,14,1,15,2,4,2,5,2,6,2,7,2,8,2,15,2,16,3,1,3,2,3,3,3,4,3,5,3,7,3,16,4,0,4,1,4,2,4,7,4,16,4,17,5,0,5,1,5,6,5,16,5,17,6,0,6,1,6,6,6,7,6,16,6,17,7,0,7,1,7,6,7,7,7,16,8,1,8,7,8,8,8,15,8,16,9,1,9,7,9,8,9,9,9,13,9,14,9,15,10,1,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,1,11,2,
5,0,12,0,13,0,14,1,6,1,7,1,13,1,14,1,15,2,2,2,3,2,4,2,5,2,6,2,7,2,15,2,16,3,0,3,1,3,2,3,3,3,6,3,7,3,16,4,0,4,1,4,6,4,16,5,0,5,6,5,16,6,0,6,1,6,6,6,16,7,0,7,1,7,6,7,7,7,16,8,0,8,1,8,7,8,8,8,15,8,16,9,0,9,1,9,7,9,8,9,9,9,10,9,12,9,13,9,14,9,15,10,1,10,8,10,9,10,10,10,11,10,12,10,13,
5,0,12,0,13,0,14,1,4,1,5,1,6,1,7,1,13,1,14,1,15,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,15,2,16,3,0,3,1,3,6,3,16,4,0,4,6,4,16,5,0,5,6,5,16,6,0,6,6,6,16,7,0,7,6,7,7,7,15,7,16,8,0,8,6,8,7,8,8,8,14,8,15,9,0,9,1,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,0,10,1,10,9,10,10,10,11,10,12,10,13,
5,0,7,0,8,0,13,0,14,0,15,1,3,1,4,1,5,1,6,1,7,1,8,1,14,1,15,1,16,2,0,2,1,2,2,2,3,2,4,2,7,2,16,3,1,3,7,3,16,3,17,4,1,4,6,4,7,4,17,5,1,5,6,5,7,5,17,6,1,6,6,6,7,6,16,6,17,7,1,7,7,7,16,8,1,8,7,8,8,8,9,8,15,8,16,9,1,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,10,10,11,10,12,10,13,
5,0,8,0,13,0,14,1,3,1,4,1,5,1,6,1,7,1,8,1,13,1,14,1,15,2,0,2,1,2,2,2,3,2,4,2,7,2,8,2,15,2,16,3,0,3,1,3,7,3,16,4,0,4,7,4,16,4,17,5,0,5,7,5,17,6,0,6,7,6,16,6,17,7,0,7,7,7,16,8,0,8,7,8,8,8,15,8,16,9,0,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,10,10,11,10,12,10,13,
5,0,13,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,13,1,14,1,15,2,0,2,1,2,2,2,3,2,4,2,7,2,14,2,15,2,16,3,0,3,1,3,7,3,16,4,0,4,1,4,6,4,16,5,0,5,1,5,6,5,16,6,0,6,1,6,6,6,16,7,0,7,6,7,7,7,16,8,0,8,6,8,7,8,15,8,16,9,0,9,7,9,8,9,9,9,13,9,14,9,15,10,8,10,9,10,10,10,11,10,12,10,13,10,14,
5,0,6,0,7,0,8,0,13,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,13,1,14,1,15,2,0,2,1,2,7,2,15,2,16,3,0,3,6,3,15,3,16,4,0,4,6,4,16,5,0,5,6,5,16,6,0,6,6,6,16,7,0,7,6,7,7,7,15,7,16,8,0,8,6,8,7,8,14,8,15,9,0,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,8,10,9,10,10,10,11,10,12,10,13,
5,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,14,0,15,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,14,1,15,1,16,2,1,2,7,2,8,2,16,3,1,3,7,3,16,3,17,4,1,4,7,4,17,5,1,5,6,5,7,5,17,6,0,6,1,6,6,6,7,6,17,7,0,7,1,7,7,7,8,7,16,7,17,8,0,8,1,8,7,8,8,8,9,8,15,8,16,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,10,10,11,10,12,10,13,
5,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,14,0,15,1,1,1,2,1,7,1,8,1,14,1,15,1,16,2,1,2,7,2,16,3,1,3,7,3,16,3,17,4,0,4,1,4,6,4,7,4,17,5,0,5,1,5,6,5,7,5,17,6,0,6,1,6,6,6,7,6,16,6,17,7,0,7,7,7,8,7,16,8,7,8,8,8,9,8,14,8,15,8,16,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,11,10,12,
5,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,14,1,15,2,1,2,7,2,8,2,14,2,15,2,16,3,0,3,1,3,7,3,16,4,0,4,1,4,6,4,7,4,16,5,0,5,1,5,6,5,16,5,17,6,0,6,6,6,16,7,0,7,6,7,7,7,16,8,0,8,7,8,8,8,15,8,16,9,7,9,8,9,9,9,14,9,15,10,8,10,9,10,10,10,11,10,12,10,13,10,14,
5,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,2,1,8,1,9,1,15,1,16,2,1,2,2,2,8,2,15,2,16,2,17,3,1,3,2,3,7,3,8,3,17,4,1,4,7,4,17,5,1,5,7,5,17,6,1,6,7,6,17,7,0,7,1,7,7,7,8,7,17,8,7,8,8,8,9,8,16,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,10,10,11,10,12,10,13,10,14,
5,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,15,2,1,2,2,2,8,2,9,2,15,2,16,3,1,3,2,3,7,3,8,3,16,3,17,4,1,4,7,4,16,4,17,5,1,5,7,5,17,6,0,6,1,6,7,6,17,7,0,7,1,7,7,7,17,8,7,8,8,8,16,8,17,9,7,9,8,9,9,9,15,9,16,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,10,11,11,11,12,11,13,
5,0,2,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,8,2,9,2,10,2,15,3,1,3,2,3,8,3,15,3,16,4,1,4,7,4,16,4,17,5,1,5,7,5,16,5,17,6,0,6,1,6,6,6,7,6,17,7,0,7,1,7,6,7,7,7,17,8,0,8,6,8,7,8,17,9,7,9,8,9,16,10,7,10,8,10,9,10,15,10,16,11,9,11,10,11,11,11,12,11,13,11,14,11,15,12,11,12,12,
5,0,2,0,3,0,4,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,8,2,9,2,15,3,1,3,7,3,8,3,15,3,16,4,1,4,7,4,16,4,17,5,0,5,1,5,6,5,7,5,16,5,17,6,0,6,1,6,6,6,7,6,17,7,0,7,6,7,7,7,17,8,6,8,7,8,16,9,7,9,8,9,16,10,8,10,9,10,10,10,14,10,15,11,9,11,10,11,11,11,12,11,13,11,14,
5,0,2,0,3,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,8,2,9,2,10,3,1,3,2,3,8,3,9,3,15,4,1,4,7,4,15,4,16,5,0,5,1,5,6,5,7,5,16,5,17,6,0,6,6,6,7,6,16,6,17,7,0,7,6,7,16,7,17,8,6,8,7,8,16,8,17,9,6,9,7,9,16,10,7,10,8,10,15,10,16,11,8,11,9,11,10,11,11,11,12,11,13,11,14,11,15,12,9,12,10,12,11,12,12,12,13,
6,0,8,0,9,0,10,0,11,0,12,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,3,2,4,2,5,2,6,2,7,2,8,2,14,2,15,3,2,3,3,3,4,3,6,3,7,3,15,4,1,4,2,4,6,4,15,4,16,5,0,5,1,5,6,5,15,5,16,6,0,6,6,6,15,6,16,7,0,7,6,7,15,8,0,8,6,8,7,8,14,8,15,9,0,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,0,10,1,10,8,10,9,10,10,10,11,10,12,11,1,11,2,12,2,12,3,12,4,
6,0,8,0,9,0,10,0,11,0,12,0,13,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,3,2,4,2,5,2,6,2,7,2,8,2,15,2,16,3,2,3,3,3,4,3,7,3,16,4,1,4,2,4,7,4,16,5,1,5,6,5,16,6,0,6,1,6,6,6,7,6,16,7,0,7,7,7,15,7,16,8,0,8,7,8,8,8,14,8,15,9,0,9,1,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,1,10,2,10,9,10,10,10,11,10,12,10,13,11,2,11,3,11,4,12,3,12,4,12,5,
6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,5,1,6,1,7,1,8,1,9,1,10,1,13,1,14,1,15,2,3,2,4,2,5,2,7,2,8,2,15,3,1,3,2,3,3,3,7,3,15,3,16,4,1,4,2,4,6,4,16,5,0,5,1,5,6,5,16,6,0,6,6,6,16,7,0,7,6,7,7,7,15,7,16,8,0,8,7,8,8,8,14,8,15,9,0,9,1,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,1,10,2,10,9,10,10,10,11,10,12,11,2,11,3,11,4,
6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,1,5,1,6,1,7,1,8,1,9,1,10,1,14,1,15,2,3,2,4,2,5,2,8,2,16,3,2,3,3,3,7,3,16,3,17,4,1,4,2,4,7,4,17,5,1,5,7,5,17,6,0,6,1,6,7,6,16,6,17,7,0,7,1,7,7,7,8,7,16,8,1,8,7,8,8,8,9,8,14,8,15,8,16,9,1,9,2,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,2,10,3,10,4,10,10,10,11,10,12,11,3,11,4,
6,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,1,4,1,5,1,6,1,7,1,8,1,9,1,14,1,15,2,2,2,3,2,4,2,7,2,8,2,15,2,16,3,1,3,2,3,7,3,16,4,1,4,7,4,16,4,17,5,0,5,1,5,6,5,7,5,16,5,17,6,0,6,6,6,7,6,16,7,0,7,7,7,15,7,16,8,0,8,1,8,7,8,8,8,9,8,14,8,15,9,1,9,2,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,2,10,3,10,4,11,3,11,4,
6,0,9,0,10,0,11,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,14,2,15,3,1,3,2,3,3,3,7,3,15,3,16,4,1,4,6,4,7,4,16,5,0,5,1,5,6,5,16,6,0,6,6,6,16,7,0,7,6,7,7,7,16,8,0,8,7,8,15,8,16,9,0,9,1,9,7,9,8,9,9,9,13,9,14,9,15,10,1,10,2,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,2,11,3,
6,0,8,0,9,0,10,0,11,0,12,0,13,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,3,2,4,2,5,2,8,2,9,2,15,2,16,3,2,3,3,3,8,3,16,3,17,4,1,4,2,4,7,4,17,5,1,5,7,5,17,6,0,6,1,6,7,6,17,7,1,7,7,7,16,7,17,8,1,8,7,8,8,8,15,8,16,9,1,9,2,9,8,9,9,9,10,9,13,9,14,9,15,10,2,10,3,10,4,10,9,10,10,10,11,10,12,10,13,10,14,11,3,11,4,
6,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,2,2,3,2,4,2,8,2,15,2,16,3,1,3,2,3,7,3,16,4,0,4,1,4,7,4,16,4,17,5,0,5,7,5,17,6,0,6,7,6,16,6,17,7,0,7,7,7,16,8,0,8,1,8,7,8,8,8,15,8,16,9,1,9,2,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,2,10,3,10,9,10,10,10,11,10,12,10,13,
6,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,1,2,2,2,3,2,8,2,15,2,16,3,0,3,1,3,7,3,16,4,0,4,6,4,7,4,16,5,0,5,6,5,16,6,0,6,6,6,7,6,16,7,0,7,6,7,7,7,16,8,0,8,1,8,7,8,8,8,14,8,15,8,16,9,1,9,2,9,3,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,2,10,3,10,10,10,11,10,12,10,13,
6,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,2,1,3,1,4,1,8,1,9,1,13,1,14,1,15,2,1,2,2,2,7,2,15,3,0,3,1,3,6,3,7,3,16,4,0,4,6,4,16,5,0,5,6,5,16,6,0,6,6,6,16,7,0,7,6,7,7,7,15,7,16,8,0,8,1,8,7,8,8,8,14,8,15,9,1,9,2,9,3,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,10,10,11,10,12,
6,0,7,0,8,0,9,0,10,0,11,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,2,2,3,2,4,2,8,2,9,2,13,2,14,2,15,3,1,3,2,3,8,3,15,3,16,4,1,4,7,4,16,5,0,5,1,5,7,5,16,5,17,6,0,6,7,6,17,7,0,7,1,7,7,7,16,7,17,8,1,8,7,8,16,9,1,9,2,9,3,9,7,9,8,9,9,9,14,9,15,9,16,10,2,10,3,10,4,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,11,11,12,
6,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,2,1,3,1,4,1,5,1,6,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,1,2,2,2,8,2,9,2,14,2,15,2,16,3,1,3,7,3,8,3,16,4,0,4,1,4,7,4,16,4,17,5,0,5,6,5,7,5,17,6,0,6,6,6,7,6,16,6,17,7,0,7,1,7,7,7,16,8,1,8,2,8,7,8,8,8,15,8,16,9,2,9,3,9,8,9,9,9,10,9,13,9,14,9,15,10,3,10,9,10,10,10,11,10,12,10,13,10,14,
6,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,1,1,2,1,3,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,1,2,8,2,14,2,15,2,16,3,0,3,1,3,7,3,15,3,16,4,0,4,6,4,7,4,16,5,0,5,6,5,7,5,16,6,0,6,6,6,7,6,16,7,0,7,1,7,6,7,7,7,16,8,1,8,2,8,7,8,8,8,15,8,16,9,2,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,9,10,10,10,11,10,12,10,13,
6,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,1,2,2,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,3,0,3,1,3,7,3,8,3,14,3,15,4,0,4,6,4,7,4,15,4,16,5,0,5,6,5,16,6,0,6,6,6,16,7,0,7,6,7,16,8,0,8,1,8,6,8,7,8,15,8,16,9,1,9,2,9,7,9,8,9,14,9,15,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,10,11,11,11,12,11,13,
6,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,2,1,3,1,4,1,9,1,10,1,11,1,12,1,13,1,14,2,1,2,2,2,9,2,10,2,14,2,15,2,16,3,1,3,8,3,15,3,16,4,1,4,7,4,16,4,17,5,0,5,1,5,7,5,17,6,0,6,1,6,7,6,17,7,1,7,7,7,17,8,1,8,2,8,3,8,7,8,8,8,16,8,17,9,2,9,3,9,8,9,9,9,15,9,16,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,12,
6,0,6,0,7,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,2,2,3,2,9,2,10,2,11,2,12,2,13,2,14,3,1,3,8,3,9,3,14,3,15,3,16,4,1,4,7,4,8,4,15,4,16,5,0,5,7,5,16,5,17,6,0,6,1,6,7,6,17,7,0,7,1,7,7,7,17,8,1,8,2,8,7,8,16,8,17,9,2,9,3,9,7,9,8,9,16,10,8,10,9,10,10,10,14,10,15,10,16,11,9,11,10,11,11,11,12,11,13,11,14,
6,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,2,1,3,1,4,1,5,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,1,2,2,2,9,2,10,2,11,2,12,2,13,2,14,2,15,3,0,3,1,3,8,3,14,3,15,3,16,4,0,4,7,4,15,4,16,5,0,5,7,5,16,6,0,6,1,6,6,6,7,6,16,6,17,7,0,7,1,7,6,7,7,7,16,7,17,8,1,8,2,8,7,8,16,9,2,9,7,9,8,9,15,9,16,10,8,10,9,10,10,10,11,10,13,10,14,10,15,11,9,11,10,11,11,11,12,11,13,11,14,
6,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,1,1,1,2,1,3,1,9,1,10,1,11,1,12,1,13,2,1,2,8,2,9,2,10,2,12,2,13,2,14,2,15,3,0,3,7,3,8,3,14,3,15,3,16,4,0,4,7,4,15,4,16,5,0,5,6,5,7,5,16,6,0,6,1,6,6,6,16,7,0,7,1,7,2,7,6,7,7,7,16,8,1,8,2,8,6,8,7,8,16,9,7,9,8,9,15,9,16,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,10,11,11,11,12,11,13,
6,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,9,2,10,2,11,2,12,2,13,3,0,3,1,3,8,3,9,3,13,3,14,3,15,4,0,4,7,4,15,5,0,5,6,5,7,5,15,5,16,6,0,6,6,6,16,7,0,7,1,7,6,7,16,8,1,8,2,8,6,8,7,8,16,9,6,9,7,9,15,9,16,10,7,10,8,10,9,10,14,10,15,11,8,11,9,11,10,11,11,11,12,11,13,11,14,12,11,12,12,
6,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,8,1,9,1,10,1,11,1,12,2,0,2,1,2,9,2,10,2,11,2,12,2,13,2,14,3,0,3,7,3,8,3,13,3,14,3,15,4,0,4,6,4,7,4,15,5,0,5,6,5,15,5,16,6,0,6,6,6,16,7,0,7,1,7,6,7,16,8,1,8,6,8,7,8,16,9,6,9,7,9,15,10,7,10,8,10,9,10,14,10,15,11,8,11,9,11,10,11,11,11,12,11,13,11,14,
6,0,3,0,4,0,5,0,6,0,7,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,9,2,10,2,11,2,12,3,0,3,8,3,9,3,10,3,11,3,12,3,13,3,14,4,0,4,7,4,13,4,14,4,15,5,0,5,6,5,7,5,15,6,0,6,6,6,15,6,16,7,0,7,1,7,6,7,16,8,1,8,6,8,16,9,6,9,7,9,15,9,16,10,6,10,7,10,8,10,15,11,7,11,8,11,9,11,10,11,13,11,14,12,9,12,10,12,11,12,12,12,13,
7,0,16,1,14,1,15,1,16,2,12,2,13,2,14,3,0,3,11,3,12,3,13,4,0,4,1,4,10,4,11,5,1,5,9,5,10,6,1,6,2,6,8,6,9,7,1,7,2,7,7,7,8,8,2,8,6,8,7,9,2,9,3,9,6,10,2,10,3,10,5,10,6,11,3,11,4,11,5,12,3,12,4,
7,0,15,0,16,1,14,1,15,1,16,2,12,2,13,2,14,3,0,3,11,3,12,4,0,4,1,4,9,4,10,4,11,5,0,5,1,5,8,5,9,5,10,6,1,6,7,6,8,6,9,7,1,7,2,7,6,7,7,7,8,8,1,8,2,8,6,8,7,9,2,9,5,9,6,10,2,10,3,10,4,10,5,11,2,11,3,11,4,12,3,
7,0,16,0,17,1,14,1,15,1,16,1,17,2,0,2,1,2,13,2,14,2,15,3,1,3,11,3,12,3,13,4,1,4,2,4,10,4,11,5,1,5,2,5,9,5,10,6,2,6,8,6,9,7,2,7,7,7,8,8,2,8,3,8,6,8,7,9,2,9,3,9,5,9,6,10,3,10,4,10,5,11,3,11,4,12,3,12,4,
7,0,16,1,1,1,14,1,15,1,16,1,17,2,0,2,1,2,12,2,13,2,14,2,15,3,1,3,11,3,12,3,13,4,1,4,9,4,10,4,11,5,1,5,2,5,8,5,9,5,10,6,1,6,2,6,7,6,8,7,2,7,6,7,7,8,2,8,5,8,6,9,2,9,3,9,4,9,5,10,2,10,3,10,4,11,3,
7,0,16,1,0,1,1,1,13,1,14,1,15,1,16,2,0,2,1,2,12,2,13,2,14,3,1,3,10,3,11,3,12,4,1,4,9,4,10,5,1,5,7,5,8,5,9,6,1,6,2,6,6,6,7,6,8,7,1,7,2,7,5,7,6,8,2,8,4,8,5,9,2,9,3,9,4,10,2,10,3,11,2,11,3,
7,0,0,0,15,0,16,1,0,1,13,1,14,1,15,1,16,2,0,2,1,2,11,2,12,2,13,2,14,3,0,3,1,3,9,3,10,3,11,3,12,4,1,4,8,4,9,4,10,5,1,5,7,5,8,6,1,6,5,6,6,6,7,7,1,7,2,7,4,7,5,7,6,8,1,8,2,8,3,8,4,9,1,9,2,9,3,10,2,10,3,
7,0,0,0,15,0,16,1,0,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,10,2,11,2,12,2,13,3,0,3,1,3,9,3,10,3,11,4,0,4,1,4,7,4,8,4,9,5,0,5,1,5,6,5,7,6,1,6,5,6,6,7,1,7,4,7,5,8,1,8,2,8,3,8,4,9,1,9,2,9,3,10,1,10,2,
7,0,0,1,0,1,15,1,16,2,0,2,12,2,13,2,14,2,15,2,16,3,0,3,10,3,11,3,12,3,13,4,0,4,8,4,9,4,10,5,0,5,1,5,6,5,7,5,8,6,0,6,1,6,5,6,6,6,7,7,0,7,1,7,4,7,5,8,0,8,1,8,3,8,4,9,1,9,2,9,3,10,1,10,2,
7,0,0,1,0,1,14,1,15,1,16,2,0,2,11,2,12,2,13,2,14,2,15,2,16,3,0,3,9,3,10,3,11,3,12,4,0,4,7,4,8,4,9,4,10,5,0,5,5,5,6,5,7,6,0,6,4,6,5,6,6,7,0,7,3,7,4,8,0,8,1,8,2,8,3,9,0,9,1,9,2,10,0,
7,0,0,0,1,1,0,1,1,2,0,2,1,2,15,2,16,3,1,3,11,3,12,3,13,3,14,3,15,3,16,4,1,4,9,4,10,4,11,4,12,5,1,5,7,5,8,5,9,5,10,6,1,6,6,6,7,6,8,7,1,7,4,7,5,7,6,8,1,8,2,8,3,8,4,9,1,9,2,9,3,10,1,10,2,
7,0,0,1,0,2,0,3,0,3,14,3,15,3,16,3,17,4,0,4,11,4,12,4,13,4,14,4,15,4,16,4,17,5,0,5,8,5,9,5,10,5,11,6,0,6,6,6,7,6,8,6,9,7,0,7,4,7,5,7,6,7,7,8,0,8,3,8,4,8,5,9,0,9,1,9,2,9,3,10,0,10,1,10,2,11,0,11,1,
7,0,0,0,1,1,0,1,1,2,0,2,1,3,0,3,1,3,13,3,14,3,15,3,16,4,0,4,1,4,10,4,11,4,12,4,13,4,14,4,15,4,16,5,0,5,1,5,7,5,8,5,9,5,10,5,11,6,0,6,1,6,5,6,6,6,7,6,8,7,0,7,4,7,5,7,6,8,0,8,1,8,2,8,3,8,4,9,0,9,1,9,2,10,0,10,1,
7,0,0,0,1,1,0,1,1,2,0,2,1,3,0,4,0,4,12,4,13,4,14,4,15,4,16,5,0,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,6,0,6,6,6,7,6,8,6,9,6,10,7,0,7,4,7,5,7,6,7,7,8,0,8,2,8,3,8,4,9,0,9,1,9,2,10,0,10,1,
7,0,1,0,2,1,1,1,2,2,1,3,1,4,1,4,12,4,13,4,14,4,15,4,16,4,17,5,1,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,5,16,5,17,6,1,6,6,6,7,6,8,6,9,7,0,7,1,7,4,7,5,7,6,8,0,8,1,8,2,8,3,8,4,9,0,9,1,9,2,10,0,10,1,
7,0,1,0,2,1,1,1,2,2,1,3,1,4,1,5,1,5,10,5,11,5,12,5,13,5,14,5,15,5,16,5,17,6,0,6,1,6,7,6,8,6,9,6,10,6,11,6,12,6,13,7,0,7,1,7,5,7,6,7,7,7,8,8,0,8,1,8,3,8,4,8,5,9,0,9,1,9,2,9,3,10,0,10,1,
7,0,1,1,1,1,2,2,1,3,1,4,1,5,0,5,1,6,0,6,1,6,9,6,10,6,11,6,12,6,13,6,14,6,15,6,16,6,17,7,0,7,1,7,6,7,7,7,8,7,9,7,10,7,11,8,0,8,3,8,4,8,5,8,6,9,0,9,1,9,2,9,3,9,4,10,0,10,1,
7,0,2,0,3,1,2,1,3,2,2,3,2,4,1,4,2,5,1,5,2,6,1,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,15,6,16,6,17,7,1,7,5,7,6,7,7,7,8,7,9,7,10,8,1,8,2,8,3,8,4,8,5,8,6,9,0,9,1,9,2,9,3,10,0,10,1,
7,0,2,0,3,1,2,1,3,2,2,3,2,4,1,4,2,5,1,5,2,6,1,6,12,6,13,6,14,6,15,6,16,7,1,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,7,14,7,15,7,16,7,17,8,0,8,1,8,4,8,5,8,6,8,7,8,8,9,0,9,1,9,2,9,3,9,4,10,0,10,1,
7,0,2,0,3,1,2,1,3,2,2,3,1,3,2,4,1,4,2,5,1,6,1,6,9,6,10,6,11,6,12,6,13,6,14,6,15,6,16,7,0,7,1,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,7,14,7,15,7,16,7,17,8,0,8,1,8,2,8,3,8,4,8,5,8,6,9,0,9,1,9,2,
7,0,3,1,2,1,3,2,2,3,2,4,1,4,2,5,1,6,1,7,0,7,1,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,7,14,7,15,7,16,7,17,8,0,8,1,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,13,8,14,8,15,8,16,8,17,9,0,9,1,9,2,9,3,10,0,
7,0,3,0,4,1,3,1,4,2,3,3,2,3,3,4,2,4,3,5,2,6,1,6,2,7,1,7,2,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,7,14,7,15,7,16,7,17,7,18,8,1,8,2,8,3,8,4,8,5,8,6,8,16,8,17,8,18,9,0,9,1,9,2,
8,0,10,0,11,0,12,0,13,0,14,1,8,1,9,1,10,1,14,1,15,2,8,2,9,2,15,2,16,3,3,3,4,3,5,3,8,3,16,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,16,4,17,5,1,5,2,5,7,5,8,5,16,5,17,6,0,6,1,6,7,6,8,6,16,6,17,7,0,7,1,7,8,7,16,8,0,8,1,8,8,8,9,8,15,8,16,9,1,9,8,9,10,9,11,9,12,9,13,9,14,9,15,10,1,10,2,10,7,10,8,10,11,10,12,10,13,11,2,11,3,11,4,11,5,11,6,11,7,12,3,12,4,12,5,12,6,
8,0,9,0,10,0,11,0,12,0,13,0,14,1,8,1,9,1,10,1,14,1,15,2,8,2,15,2,16,3,2,3,3,3,4,3,5,3,7,3,8,3,16,4,1,4,2,4,3,4,5,4,6,4,7,4,16,5,0,5,1,5,7,5,16,6,0,6,7,6,8,6,16,7,0,7,8,7,15,7,16,8,0,8,7,8,8,8,9,8,14,8,15,8,16,9,1,9,7,9,10,9,11,9,12,9,13,9,14,9,15,10,1,10,2,10,6,10,7,10,11,10,12,10,13,11,2,11,3,11,4,11,5,11,6,
8,0,9,0,10,0,11,0,12,0,13,0,14,1,8,1,9,1,14,1,15,2,7,2,8,2,15,3,1,3,2,3,3,3,4,3,5,3,7,3,16,4,0,4,1,4,6,4,7,4,16,5,0,5,7,5,16,6,0,6,7,6,16,7,0,7,7,7,8,7,15,7,16,8,0,8,7,8,8,8,9,8,14,8,15,9,0,9,1,9,6,9,7,9,9,9,10,9,11,9,12,9,13,9,14,10,1,10,2,10,3,10,5,10,6,10,11,10,12,11,2,11,3,11,4,11,5,
8,0,12,0,13,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,8,2,9,2,10,2,15,2,16,3,3,3,4,3,5,3,8,3,9,3,16,4,1,4,2,4,3,4,4,4,5,4,6,4,8,4,16,4,17,5,1,5,2,5,7,5,8,5,17,6,0,6,1,6,7,6,8,6,17,7,0,7,1,7,8,7,16,7,17,8,0,8,1,8,8,8,9,8,16,9,1,9,7,9,8,9,9,9,10,9,14,9,15,9,16,10,1,10,2,10,7,10,10,10,11,10,12,10,13,10,14,10,15,11,2,11,3,11,4,11,5,11,6,11,7,12,3,12,4,12,5,
8,0,11,0,12,0,13,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,8,2,9,2,15,3,2,3,3,3,4,3,5,3,8,3,16,4,1,4,2,4,5,4,6,4,7,4,8,4,16,5,0,5,1,5,7,5,16,6,0,6,7,6,8,6,16,6,17,7,0,7,7,7,8,7,16,8,0,8,7,8,8,8,9,8,15,8,16,9,0,9,1,9,7,9,9,9,10,9,14,9,15,10,1,10,2,10,6,10,7,10,10,10,11,10,12,10,13,10,14,11,2,11,3,11,4,11,5,11,6,
8,0,10,0,11,0,12,0,13,1,9,1,10,1,11,1,12,1,13,1,14,2,3,2,4,2,8,2,9,2,14,2,15,3,1,3,2,3,3,3,4,3,5,3,8,3,15,3,16,4,0,4,1,4,6,4,7,4,16,5,0,5,7,5,16,6,0,6,7,6,16,7,0,7,7,7,8,7,16,8,0,8,7,8,8,8,15,8,16,9,0,9,1,9,6,9,7,9,9,9,10,9,13,9,14,9,15,10,1,10,2,10,3,10,4,10,5,10,6,10,10,10,11,10,12,10,13,10,14,11,2,11,3,11,4,11,5,
8,0,10,0,11,0,12,0,13,0,14,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,2,2,3,2,4,2,5,2,6,2,9,2,15,2,16,3,1,3,2,3,3,3,5,3,6,3,8,3,16,3,17,4,1,4,7,4,8,4,17,5,0,5,1,5,8,5,17,6,0,6,1,6,8,6,17,7,1,7,8,7,16,7,17,8,1,8,7,8,8,8,9,8,16,9,1,9,2,9,6,9,7,9,10,9,11,9,13,9,14,9,15,9,16,10,2,10,3,10,4,10,5,10,6,10,11,10,12,10,13,10,14,
8,0,10,0,11,0,12,0,13,0,14,1,4,1,9,1,10,1,11,1,13,1,14,1,15,2,2,2,3,2,4,2,5,2,6,2,8,2,9,2,15,2,16,3,1,3,2,3,6,3,7,3,8,3,16,4,0,4,1,4,7,4,8,4,16,4,17,5,0,5,7,5,8,5,17,6,0,6,8,6,16,6,17,7,0,7,1,7,7,7,8,7,16,8,1,8,7,8,8,8,9,8,15,8,16,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,2,10,3,10,4,10,5,10,6,10,11,10,12,10,13,10,14,
8,0,9,0,10,0,11,0,12,0,13,0,14,1,2,1,3,1,4,1,5,1,9,1,10,1,14,1,15,2,1,2,2,2,3,2,4,2,5,2,6,2,8,2,15,2,16,3,0,3,1,3,6,3,7,3,8,3,16,4,0,4,7,4,16,5,0,5,7,5,16,6,0,6,7,6,8,6,16,7,0,7,1,7,7,7,8,7,16,8,1,8,6,8,8,8,9,8,15,8,16,9,1,9,2,9,3,9,4,9,5,9,6,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,3,10,4,10,11,10,12,10,13,
8,0,9,0,10,0,11,0,12,0,13,0,14,1,1,1,2,1,3,1,4,1,5,1,8,1,9,1,14,1,15,2,0,2,1,2,5,2,6,2,8,2,15,2,16,3,0,3,6,3,7,3,16,4,0,4,7,4,16,5,0,5,7,5,16,6,0,6,7,6,16,7,0,7,1,7,6,7,7,7,8,7,15,7,16,8,1,8,2,8,5,8,6,8,8,8,9,8,14,8,15,9,2,9,3,9,4,9,5,9,9,9,10,9,11,9,12,9,13,9,14,10,11,10,12,
8,0,11,0,12,0,13,1,3,1,4,1,5,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,1,2,2,2,3,2,4,2,5,2,6,2,9,2,10,2,15,2,16,3,1,3,7,3,8,3,16,4,0,4,1,4,7,4,8,4,16,4,17,5,0,5,8,5,17,6,0,6,1,6,7,6,8,6,17,7,1,7,7,7,8,7,16,7,17,8,1,8,2,8,6,8,7,8,8,8,9,8,16,9,2,9,3,9,4,9,5,9,6,9,9,9,10,9,15,9,16,10,3,10,4,10,5,10,10,10,11,10,12,10,13,10,14,10,15,11,11,11,12,11,13,
8,0,11,0,12,0,13,1,2,1,3,1,4,1,5,1,6,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,1,2,2,2,6,2,7,2,9,2,15,2,16,3,0,3,1,3,7,3,8,3,16,4,0,4,7,4,8,4,16,4,17,5,0,5,8,5,17,6,0,6,7,6,8,6,16,6,17,7,0,7,1,7,7,7,8,7,16,8,1,8,2,8,5,8,6,8,8,8,9,8,15,8,16,9,2,9,3,9,4,9,5,9,6,9,9,9,10,9,14,9,15,10,10,10,11,10,12,10,13,10,14,
8,0,2,0,3,0,4,0,5,0,10,0,11,0,12,0,13,0,14,1,1,1,2,1,3,1,4,1,5,1,6,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,0,2,1,2,6,2,7,2,8,2,9,2,15,2,16,3,0,3,7,3,8,3,16,4,0,4,7,4,8,4,16,5,0,5,7,5,16,6,0,6,7,6,8,6,16,7,0,7,1,7,6,7,7,7,8,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,8,8,9,8,15,8,16,9,3,9,4,9,5,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,10,10,11,10,12,10,13,10,14,
8,0,1,0,2,0,3,0,4,0,5,0,6,0,10,0,11,0,12,0,13,0,14,1,1,1,2,1,5,1,6,1,9,1,10,1,13,1,14,1,15,2,0,2,1,2,6,2,7,2,8,2,15,2,16,3,0,3,7,3,8,3,16,4,0,4,7,4,16,5,0,5,7,5,16,6,0,6,1,6,6,6,7,6,16,7,0,7,1,7,2,7,5,7,6,7,8,7,15,7,16,8,1,8,2,8,3,8,4,8,5,8,8,8,9,8,15,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,10,10,11,10,12,10,13,
8,0,2,0,3,0,4,0,5,1,1,1,2,1,3,1,4,1,5,1,6,1,9,1,10,1,11,1,12,1,13,1,14,2,0,2,1,2,6,2,8,2,9,2,13,2,14,2,15,3,0,3,7,3,8,3,15,3,16,4,0,4,7,4,16,5,0,5,7,5,16,6,0,6,7,6,16,7,0,7,1,7,6,7,7,7,16,8,1,8,2,8,3,8,4,8,5,8,8,8,15,8,16,9,2,9,3,9,4,9,8,9,9,9,14,9,15,10,9,10,10,10,11,10,12,10,13,10,14,11,11,11,12,
8,0,2,0,3,0,4,0,5,0,6,0,11,0,12,0,13,1,1,1,2,1,6,1,7,1,10,1,11,1,12,1,13,1,14,1,15,2,1,2,7,2,9,2,10,2,15,2,16,3,0,3,1,3,8,3,9,3,16,3,17,4,0,4,1,4,8,4,16,4,17,5,0,5,1,5,8,5,17,6,1,6,7,6,8,6,17,7,1,7,2,7,3,7,6,7,7,7,8,7,16,7,17,8,2,8,3,8,4,8,5,8,6,8,8,8,9,8,16,9,9,9,10,9,14,9,15,9,16,10,10,10,11,10,12,10,13,10,14,10,15,
8,0,3,0,4,0,5,1,2,1,3,1,4,1,5,1,6,1,7,1,11,1,12,1,13,2,1,2,7,2,9,2,10,2,11,2,12,2,13,2,14,2,15,3,0,3,1,3,7,3,8,3,9,3,15,3,16,4,0,4,8,4,16,5,0,5,8,5,16,5,17,6,0,6,1,6,7,6,8,6,16,6,17,7,1,7,2,7,6,7,7,7,8,7,16,7,17,8,1,8,2,8,3,8,4,8,5,8,6,8,8,8,16,9,3,9,4,9,5,9,8,9,9,9,15,9,16,10,9,10,10,10,14,10,15,11,10,11,11,11,12,11,13,11,14,
8,0,2,0,3,0,4,0,5,0,6,1,1,1,2,1,6,1,7,1,10,1,11,1,12,1,13,1,14,2,0,2,1,2,7,2,9,2,10,2,11,2,13,2,14,2,15,3,0,3,7,3,8,3,9,3,15,3,16,4,0,4,7,4,8,4,16,5,0,5,7,5,8,5,16,6,0,6,1,6,7,6,16,7,1,7,2,7,5,7,6,7,7,7,8,7,16,8,2,8,3,8,4,8,5,8,8,8,16,9,8,9,9,9,15,9,16,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,10,11,11,11,12,11,13,
8,0,3,0,4,0,5,1,1,1,2,1,3,1,4,1,5,1,6,2,1,2,6,2,7,2,10,2,11,2,12,2,13,2,14,3,0,3,7,3,8,3,9,3,10,3,13,3,14,3,15,4,0,4,7,4,8,4,15,4,16,5,0,5,7,5,8,5,16,6,0,6,7,6,16,7,0,7,1,7,6,7,7,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,16,9,3,9,4,9,8,9,15,9,16,10,8,10,9,10,14,10,15,11,9,11,10,11,11,11,12,11,13,11,14,12,10,12,11,12,12,12,13,
8,0,2,0,3,0,4,0,5,0,6,1,1,1,2,1,5,1,6,1,7,1,11,1,12,2,0,2,1,2,7,2,9,2,10,2,11,2,12,2,13,2,14,3,0,3,7,3,8,3,9,3,14,3,15,4,0,4,7,4,8,4,15,4,16,5,0,5,7,5,16,6,0,6,1,6,6,6,7,6,16,7,1,7,2,7,5,7,6,7,7,7,16,8,2,8,3,8,4,8,5,8,7,8,16,9,7,9,8,9,15,10,8,10,9,10,14,10,15,11,9,11,10,11,11,11,12,11,13,11,14,12,11,
8,0,2,0,3,0,4,0,5,1,1,1,2,1,3,1,4,1,5,1,6,2,0,2,1,2,6,2,7,2,10,2,11,2,12,2,13,3,0,3,7,3,9,3,10,3,11,3,12,3,13,3,14,4,0,4,7,4,8,4,14,4,15,5,0,5,7,5,8,5,15,5,16,6,0,6,7,6,16,7,0,7,1,7,6,7,7,7,16,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,16,9,3,9,4,9,7,9,15,9,16,10,7,10,8,10,15,11,8,11,9,11,10,11,13,11,14,12,9,12,10,12,11,12,12,12,13,
9,0,12,0,13,0,14,1,14,1,15,2,4,2,5,2,6,2,7,2,8,2,15,2,16,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,16,4,1,4,2,4,3,4,9,4,10,4,16,5,1,5,2,5,10,5,16,6,0,6,1,6,10,6,16,7,0,7,1,7,10,7,15,7,16,8,0,8,1,8,10,8,14,8,15,9,1,9,10,9,12,9,13,9,14,10,1,10,2,10,9,10,10,10,11,10,12,10,13,11,2,11,3,11,4,11,6,11,7,11,8,11,9,11,10,11,11,12,4,12,5,12,6,12,7,12,8,
9,0,12,0,13,0,14,1,14,1,15,2,3,2,4,2,5,2,6,2,7,2,8,2,15,2,16,3,1,3,2,3,3,3,4,3,7,3,8,3,9,3,16,4,1,4,2,4,9,4,10,4,16,5,0,5,1,5,10,5,16,6,0,6,10,6,16,7,0,7,10,7,15,7,16,8,0,8,10,8,14,8,15,9,1,9,9,9,12,9,13,9,14,10,1,10,2,10,8,10,9,10,10,10,11,10,12,11,2,11,3,11,4,11,5,11,6,11,7,11,8,11,9,11,10,12,5,12,6,
9,0,12,0,13,0,14,1,4,1,5,1,6,1,14,1,15,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,15,3,1,3,2,3,3,3,8,3,9,3,16,4,0,4,1,4,9,4,16,5,0,5,9,5,10,5,16,6,0,6,10,6,15,6,16,7,0,7,10,7,14,7,15,8,0,8,9,8,13,8,14,9,0,9,1,9,8,9,9,9,11,9,12,9,13,10,1,10,2,10,7,10,8,10,9,10,10,10,11,11,2,11,3,11,4,11,5,11,6,11,7,11,8,11,9,
9,0,13,0,14,0,15,1,4,1,5,1,6,1,7,1,8,1,15,1,16,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,16,3,1,3,2,3,3,3,9,3,10,3,16,3,17,4,1,4,10,4,16,4,17,5,0,5,1,5,10,5,16,5,17,6,0,6,1,6,10,6,16,7,0,7,1,7,10,7,15,7,16,8,1,8,10,8,14,8,15,9,1,9,2,9,9,9,10,9,11,9,12,9,13,9,14,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,11,4,11,5,11,6,11,7,11,8,
9,0,13,0,14,0,15,1,3,1,4,1,5,1,6,1,7,1,8,1,15,1,16,2,1,2,2,2,3,2,4,2,7,2,8,2,9,2,16,3,1,3,2,3,9,3,10,3,16,4,0,4,1,4,10,4,16,5,0,5,10,5,16,6,0,6,10,6,16,7,0,7,10,7,15,7,16,8,1,8,9,8,13,8,14,8,15,9,1,9,2,9,8,9,9,9,10,9,11,9,12,9,13,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,11,5,11,6,
9,0,13,1,4,1,5,1,6,1,13,1,14,1,15,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,15,3,1,3,2,3,8,3,9,3,16,4,0,4,1,4,9,4,10,4,16,5,0,5,9,5,10,5,16,6,0,6,10,6,16,7,0,7,10,7,15,7,16,8,0,8,9,8,14,8,15,9,0,9,1,9,8,9,9,9,12,9,13,9,14,10,1,10,2,10,3,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,11,3,11,4,11,5,11,6,11,7,11,8,11,9,11,10,
9,0,13,0,14,1,4,1,5,1,6,1,7,1,8,1,13,1,14,1,15,1,16,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,16,3,1,3,2,3,9,3,10,3,16,3,17,4,1,4,10,4,17,5,0,5,1,5,10,5,11,5,17,6,0,6,1,6,10,6,11,6,16,6,17,7,1,7,10,7,16,8,1,8,10,8,15,8,16,9,1,9,2,9,9,9,12,9,13,9,14,9,15,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,11,4,11,5,11,6,11,7,11,8,11,9,
9,0,13,0,14,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,13,1,14,1,15,2,1,2,2,2,3,2,8,2,9,2,15,2,16,3,1,3,2,3,9,3,10,3,16,4,0,4,1,4,10,4,16,4,17,5,0,5,10,5,16,5,17,6,0,6,10,6,16,7,0,7,1,7,10,7,15,7,16,8,1,8,9,8,14,8,15,9,1,9,2,9,3,9,8,9,9,9,11,9,12,9,13,9,14,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,
9,0,4,0,5,0,6,0,7,0,13,0,14,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,13,1,14,1,15,2,1,2,2,2,8,2,9,2,15,2,16,3,0,3,1,3,9,3,10,3,16,4,0,4,10,4,16,5,0,5,10,5,16,6,0,6,10,6,16,7,0,7,9,7,15,7,16,8,1,8,8,8,9,8,14,8,15,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,
9,0,2,0,3,0,4,0,5,0,6,0,7,0,13,0,14,1,1,1,2,1,3,1,6,1,7,1,8,1,9,1,14,1,15,2,0,2,1,2,8,2,9,2,15,2,16,3,0,3,9,3,10,3,16,4,0,4,9,4,10,4,16,5,0,5,10,5,16,6,0,6,9,6,15,6,16,7,0,7,1,7,9,7,15,8,1,8,2,8,8,8,13,8,14,8,15,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,4,10,5,10,6,10,7,10,8,10,9,10,10,
9,0,4,0,5,0,6,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,14,1,15,2,1,2,2,2,3,2,8,2,9,2,10,2,15,2,16,3,1,3,2,3,9,3,10,3,16,4,0,4,1,4,10,4,16,4,17,5,0,5,1,5,10,5,17,6,0,6,10,6,16,6,17,7,1,7,10,7,16,8,1,8,9,8,15,8,16,9,2,9,3,9,8,9,9,9,13,9,14,9,15,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,6,11,7,11,8,11,9,11,10,
9,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,14,1,15,2,1,2,2,2,9,2,10,2,15,2,16,3,0,3,1,3,9,3,10,3,16,4,0,4,10,4,16,4,17,5,0,5,10,5,17,6,0,6,10,6,16,6,17,7,1,7,9,7,10,7,16,8,1,8,2,8,8,8,9,8,15,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,12,9,13,9,14,9,15,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,
9,0,2,0,3,0,4,0,5,0,6,0,7,0,8,1,1,1,2,1,3,1,7,1,8,1,9,1,14,1,15,2,0,2,1,2,9,2,10,2,15,2,16,3,0,3,9,3,10,3,16,4,0,4,10,4,16,5,0,5,10,5,16,6,0,6,10,6,16,7,1,7,9,7,15,7,16,8,1,8,2,8,3,8,7,8,8,8,14,8,15,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,
9,0,3,0,4,0,5,0,6,0,7,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,2,0,2,1,2,2,2,8,2,9,2,14,2,15,3,0,3,1,3,9,3,10,3,15,3,16,4,0,4,9,4,10,4,16,5,0,5,10,5,16,6,0,6,10,6,16,7,0,7,1,7,9,7,16,8,1,8,2,8,8,8,9,8,15,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,14,9,15,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,8,11,9,11,10,
9,0,2,0,3,0,4,0,5,0,6,0,7,1,1,1,2,1,7,1,8,1,9,1,14,2,0,2,1,2,8,2,9,2,14,2,15,3,0,3,9,3,10,3,15,3,16,4,0,4,9,4,10,4,16,5,0,5,9,5,10,5,16,6,0,6,9,6,16,7,0,7,1,7,9,7,15,7,16,8,1,8,2,8,7,8,8,8,15,9,2,9,3,9,4,9,5,9,6,9,7,9,13,9,14,9,15,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,
9,0,4,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,8,2,9,2,10,2,15,3,1,3,9,3,10,3,15,3,16,4,0,4,1,4,10,4,11,4,16,4,17,5,0,5,1,5,10,5,11,5,17,6,0,6,1,6,10,6,17,7,1,7,10,7,17,8,1,8,2,8,9,8,16,8,17,9,2,9,3,9,4,9,5,9,7,9,8,9,15,9,16,10,4,10,5,10,6,10,7,10,8,10,9,10,12,10,13,10,14,10,15,11,7,11,8,11,9,11,10,11,11,11,12,11,13,
9,0,3,0,4,0,5,0,6,0,7,0,8,1,1,1,2,1,3,1,7,1,8,1,9,2,1,2,2,2,9,2,10,2,15,3,0,3,1,3,10,3,15,3,16,4,0,4,10,4,16,4,17,5,0,5,10,5,16,5,17,6,0,6,1,6,10,6,17,7,1,7,9,7,10,7,16,7,17,8,1,8,2,8,3,8,8,8,9,8,16,9,3,9,4,9,5,9,6,9,7,9,8,9,15,9,16,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,9,11,10,11,11,11,12,
9,0,4,0,5,0,6,1,2,1,3,1,4,1,5,1,6,1,7,1,8,2,1,2,2,2,8,2,9,3,0,3,1,3,9,3,10,3,15,4,0,4,10,4,15,4,16,5,0,5,10,5,16,6,0,6,10,6,16,6,17,7,0,7,1,7,10,7,16,7,17,8,1,8,2,8,9,8,16,9,2,9,3,9,4,9,7,9,8,9,15,9,16,10,3,10,4,10,5,10,6,10,7,10,14,10,15,11,6,11,7,11,8,11,9,11,10,11,11,11,12,11,13,11,14,
9,0,2,0,3,0,4,0,5,0,6,0,7,1,1,1,2,1,3,1,6,1,7,1,8,1,9,2,1,2,8,2,9,2,10,3,0,3,1,3,9,3,10,3,14,3,15,4,0,4,10,4,15,4,16,5,0,5,10,5,16,6,0,6,10,6,16,7,1,7,9,7,10,7,16,8,1,8,2,8,8,8,9,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,15,9,16,10,4,10,5,10,6,10,7,10,8,10,13,10,14,10,15,11,7,11,8,11,9,11,10,11,11,11,12,11,13,11,14,
9,0,3,0,4,0,5,0,6,1,2,1,3,1,4,1,5,1,6,1,7,1,8,2,1,2,2,2,8,2,9,3,0,3,1,3,9,3,10,4,0,4,9,4,10,4,14,4,15,5,0,5,10,5,15,5,16,6,0,6,10,6,16,7,0,7,1,7,9,7,10,7,16,8,1,8,2,8,9,8,16,9,2,9,3,9,4,9,7,9,8,9,16,10,3,10,4,10,5,10,6,10,7,10,15,11,5,11,6,11,7,11,8,11,9,11,10,11,11,11,12,11,13,11,14,12,8,12,9,12,10,12,11,12,12,12,13,
9,0,2,0,3,0,4,0,5,0,6,0,7,1,1,1,2,1,3,1,6,1,7,1,8,1,9,2,0,2,1,2,8,2,9,3,0,3,9,3,10,4,0,4,9,4,10,4,14,4,15,5,0,5,10,5,15,5,16,6,0,6,9,6,10,6,16,7,0,7,1,7,9,7,16,8,1,8,2,8,8,8,9,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,15,9,16,10,4,10,5,10,6,10,7,10,14,10,15,11,6,11,7,11,8,11,9,11,10,11,11,11,12,11,13,11,14,12,9,12,10,12,11,12,12,
a,0,7,0,8,0,9,1,6,1,7,1,8,1,9,1,10,2,5,2,6,2,10,2,11,3,1,3,5,3,6,3,11,4,0,4,1,4,5,4,6,4,11,5,0,5,5,5,6,6,0,6,6,6,11,7,0,7,6,7,11,8,0,8,1,8,6,8,10,8,11,8,12,8,13,9,1,9,6,9,8,9,9,9,10,9,11,9,12,9,13,10,1,10,2,10,6,10,7,10,8,10,9,11,2,11,3,11,4,11,5,11,6,11,7,
a,0,7,0,8,0,9,1,6,1,7,1,8,1,9,1,10,2,5,2,6,2,10,2,11,3,0,3,1,3,5,3,11,4,0,4,1,4,5,4,11,5,0,5,5,5,11,6,0,6,5,6,6,6,11,7,0,7,6,7,11,8,0,8,6,8,10,8,11,8,12,9,0,9,1,9,6,9,8,9,9,9,10,9,11,9,12,9,13,10,1,10,2,10,5,10,6,10,7,10,8,10,9,11,2,11,3,11,4,11,5,11,6,
a,0,7,0,8,0,9,0,10,1,6,1,7,1,8,1,9,1,10,1,11,2,2,2,6,2,7,2,11,2,12,3,1,3,2,3,6,3,12,4,1,4,6,4,12,5,0,5,1,5,6,5,12,6,0,6,1,6,6,6,12,7,1,7,6,7,11,8,1,8,6,8,10,8,11,8,12,8,13,9,1,9,2,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,11,3,11,4,11,5,11,6,
a,0,7,0,8,0,9,0,10,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,6,2,11,3,1,3,2,3,6,3,11,3,12,4,0,4,1,4,6,4,12,5,0,5,6,5,12,6,0,6,6,7,0,7,1,7,6,7,11,8,1,8,6,8,10,8,11,8,12,9,1,9,2,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,11,3,11,4,11,5,
a,0,7,0,8,0,9,0,10,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,6,2,11,3,0,3,1,3,5,3,6,3,11,4,0,4,5,4,6,4,11,5,0,5,6,5,11,6,0,6,6,6,11,7,0,7,6,7,11,8,0,8,1,8,6,8,10,8,11,8,12,9,1,9,2,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,11,3,
a,0,7,0,8,0,9,0,10,1,6,1,7,1,9,1,10,1,11,2,0,2,1,2,2,2,5,2,6,2,11,3,0,3,1,3,5,3,11,4,0,4,5,4,11,5,0,5,5,5,11,6,0,6,5,6,11,7,0,7,5,7,10,8,0,8,1,8,5,8,9,8,10,8,11,9,0,9,1,9,2,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,1,10,2,10,3,10,4,10,5,10,6,10,7,
a,0,7,0,8,0,9,0,10,0,11,1,2,1,7,1,8,1,10,1,11,2,1,2,2,2,6,2,7,2,11,2,12,3,1,3,6,3,12,4,0,4,1,4,6,4,12,5,0,5,6,5,12,6,0,6,1,6,6,6,12,7,1,7,6,7,11,8,1,8,6,8,10,8,11,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,2,10,3,10,4,10,5,10,6,10,7,
a,0,7,0,8,0,9,0,10,0,11,1,1,1,2,1,6,1,7,1,10,1,11,2,1,2,2,2,6,2,11,2,12,3,0,3,1,3,6,3,12,4,0,4,6,4,12,5,0,5,6,5,12,6,0,6,6,6,11,7,0,7,1,7,6,7,11,8,1,8,5,8,6,8,9,8,10,8,11,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,2,10,3,10,4,10,5,
a,0,9,1,2,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,6,2,7,2,10,2,11,3,0,3,1,3,6,3,11,4,0,4,6,4,12,5,0,5,6,5,12,6,0,6,5,6,6,6,11,7,0,7,5,7,6,7,11,8,0,8,1,8,5,8,10,9,0,9,1,9,5,9,6,9,8,9,9,9,10,9,11,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,
a,0,8,0,9,1,2,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,6,2,7,2,10,2,11,3,0,3,6,3,11,4,0,4,5,4,6,4,11,5,0,5,5,5,11,6,0,6,5,6,11,7,0,7,5,7,11,8,0,8,5,8,10,9,0,9,1,9,2,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,
a,0,8,0,9,1,2,1,3,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,6,2,7,2,11,3,1,3,6,3,11,3,12,4,0,4,1,4,6,4,12,5,0,5,6,5,12,6,0,6,6,6,11,7,0,7,1,7,5,7,6,7,11,8,1,8,5,8,10,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,
a,0,3,0,8,0,9,0,10,1,1,1,2,1,3,1,7,1,8,1,9,1,10,1,11,2,1,2,6,2,7,2,11,2,12,3,0,3,1,3,6,3,12,4,0,4,6,4,12,5,0,5,6,5,12,6,0,6,6,6,12,7,0,7,1,7,5,7,11,8,0,8,1,8,5,8,10,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,
a,0,2,0,3,0,8,0,9,0,10,1,1,1,2,1,3,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,6,2,7,2,11,2,12,3,0,3,6,3,12,4,0,4,6,4,12,5,0,5,6,5,12,6,0,6,5,6,11,7,0,7,1,7,5,7,11,8,0,8,1,8,2,8,4,8,5,8,9,8,10,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,10,8,10,9,10,10,10,11,
a,0,1,0,2,0,3,0,7,0,8,0,9,0,10,1,1,1,2,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,6,2,11,2,12,3,0,3,6,3,11,3,12,4,0,4,5,4,6,4,12,5,0,5,5,5,11,6,0,6,5,6,11,7,0,7,1,7,5,7,10,8,0,8,1,8,2,8,3,8,4,8,5,8,9,8,10,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,9,10,10,10,11,
a,0,4,1,2,1,3,1,4,1,8,1,9,1,10,1,11,2,1,2,2,2,7,2,8,2,9,2,11,2,12,3,1,3,7,3,12,4,1,4,6,4,7,4,12,4,13,5,0,5,1,5,6,5,12,6,0,6,1,6,6,6,12,7,0,7,1,7,6,7,12,8,1,8,2,8,5,8,11,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,11,10,11,11,
a,0,3,0,4,1,2,1,3,1,8,1,9,1,10,1,11,2,1,2,7,2,8,2,11,2,12,3,1,3,7,3,12,4,0,4,1,4,6,4,7,4,12,5,0,5,6,5,12,6,0,6,6,6,12,7,0,7,1,7,5,7,11,8,1,8,2,8,5,8,10,8,11,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,6,10,7,10,8,10,9,10,10,10,11,11,10,11,11,
a,0,2,0,3,0,4,1,1,1,2,1,8,1,9,1,10,1,11,2,1,2,7,2,8,2,11,2,12,3,0,3,1,3,6,3,7,3,12,4,0,4,6,4,12,5,0,5,6,5,12,6,0,6,5,6,12,7,0,7,1,7,5,7,11,8,1,8,2,8,3,8,4,8,5,8,10,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,7,10,8,10,9,10,10,10,11,11,10,
a,0,2,0,3,0,9,0,10,1,1,1,2,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,7,2,11,2,12,3,0,3,6,3,12,4,0,4,6,4,12,5,0,5,5,5,6,5,12,6,0,6,5,6,11,7,0,7,1,7,4,7,5,7,11,8,1,8,2,8,3,8,4,8,5,8,9,8,10,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,7,10,8,10,9,10,10,11,10,
a,0,2,0,3,0,4,1,1,1,2,1,3,1,8,1,9,1,10,2,1,2,7,2,8,2,9,2,10,2,11,3,0,3,6,3,7,3,11,3,12,4,0,4,6,4,12,5,0,5,5,5,6,5,12,6,0,6,5,6,12,7,0,7,4,7,5,7,11,8,0,8,1,8,2,8,4,8,10,8,11,9,1,9,2,9,3,9,4,9,5,9,6,9,9,9,10,10,4,10,5,10,6,10,7,10,8,10,9,11,8,11,9,11,10,12,10,
a,0,3,0,4,0,5,1,2,1,3,1,9,1,10,1,11,2,1,2,2,2,8,2,9,2,10,2,11,2,12,3,1,3,7,3,8,3,12,3,13,4,1,4,7,4,13,5,0,5,1,5,6,5,13,6,0,6,1,6,6,6,12,7,0,7,1,7,2,7,5,7,12,8,1,8,2,8,3,8,4,8,5,8,11,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,6,10,7,10,8,10,9,10,10,11,9,11,10,11,11,
a,0,4,0,5,1,2,1,3,1,4,2,2,2,9,2,10,2,11,3,1,3,7,3,8,3,9,3,10,3,11,3,12,4,1,4,7,4,12,4,13,5,0,5,1,5,6,5,7,5,12,5,13,6,0,6,1,6,6,6,12,6,13,7,0,7,1,7,5,7,6,7,12,8,0,8,1,8,2,8,5,8,11,8,12,9,1,9,2,9,3,9,4,9,5,9,10,9,11,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,7,11,8,11,9,12,9,12,10,
b,0,15,1,12,1,13,1,14,1,15,2,9,2,10,2,11,2,12,2,13,2,14,2,15,3,7,3,8,3,9,3,10,3,16,3,17,4,4,4,5,4,6,4,7,4,8,4,17,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,17,5,18,6,0,6,1,6,2,6,6,6,17,6,18,7,6,7,17,7,18,8,6,8,17,9,6,9,7,9,16,9,17,10,7,10,8,10,14,10,15,10,16,11,8,11,9,11,10,11,11,11,12,11,13,11,14,12,10,12,11,
b,0,15,1,12,1,13,1,14,1,15,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,3,5,3,6,3,7,3,8,3,9,3,16,4,2,4,3,4,4,4,5,4,6,4,7,4,17,5,0,5,1,5,2,5,3,5,6,5,17,6,0,6,6,6,17,7,6,7,17,8,6,8,16,8,17,9,6,9,15,9,16,10,7,10,8,10,13,10,14,10,15,11,8,11,9,11,10,11,11,11,12,11,13,11,14,
b,0,14,0,15,1,11,1,12,1,13,1,14,1,15,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,3,4,3,5,3,6,3,7,3,8,3,16,4,0,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,16,4,17,5,0,5,1,5,2,5,6,5,17,6,5,6,6,6,17,7,5,7,16,7,17,8,5,8,6,8,16,8,17,9,6,9,15,9,16,10,6,10,7,10,8,10,12,10,13,10,14,10,15,11,8,11,9,11,10,11,11,11,12,11,13,
b,0,15,0,16,1,11,1,12,1,13,1,14,1,15,1,16,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,16,3,17,4,0,4,1,4,2,4,3,4,4,4,7,4,17,5,6,5,7,5,17,5,18,6,6,6,17,6,18,7,6,7,17,7,18,8,6,8,16,8,17,9,7,9,15,9,16,9,17,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,9,11,10,11,11,11,12,11,13,
b,0,15,0,16,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,14,2,15,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,16,3,17,4,0,4,1,4,2,4,6,4,7,4,17,5,6,5,17,6,6,6,17,7,6,7,17,8,6,8,16,8,17,9,6,9,7,9,15,9,16,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,9,11,10,11,11,11,12,11,13,
b,0,14,0,15,0,16,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,15,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,16,4,6,4,17,5,6,5,17,6,5,6,6,6,17,7,5,7,6,7,16,7,17,8,6,8,16,8,17,9,6,9,7,9,14,9,15,9,16,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,9,11,10,11,11,11,12,
b,0,13,0,14,0,15,0,16,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,15,3,0,3,1,3,2,3,6,3,7,3,16,4,6,4,16,4,17,5,5,5,17,6,5,6,17,7,5,7,16,7,17,8,6,8,15,8,16,9,6,9,7,9,8,9,13,9,14,9,15,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,
b,0,12,0,13,0,14,0,15,0,16,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,15,3,6,3,16,4,5,4,16,5,5,5,16,5,17,6,5,6,16,6,17,7,5,7,16,8,5,8,6,8,15,8,16,9,6,9,7,9,8,9,12,9,13,9,14,9,15,10,7,10,8,10,9,10,10,10,11,10,12,10,13,
b,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,0,2,1,2,2,2,6,2,7,2,15,3,5,3,6,3,16,4,5,4,16,5,5,5,16,6,5,6,16,7,5,7,15,7,16,8,5,8,6,8,14,8,15,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,8,10,9,10,10,10,11,10,12,10,13,
b,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,6,2,7,2,16,3,6,3,16,3,17,4,5,4,6,4,17,5,5,5,17,6,5,6,6,6,17,7,6,7,16,7,17,8,6,8,7,8,15,8,16,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,9,10,10,10,11,10,12,10,13,
b,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,2,7,2,8,2,15,3,6,3,16,4,6,4,16,5,5,5,17,6,5,6,6,6,16,6,17,7,6,7,16,8,6,8,7,8,15,8,16,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,9,10,10,10,11,10,12,10,13,
b,0,0,0,1,0,2,0,3,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,6,2,7,2,14,2,15,3,6,3,15,3,16,4,5,4,16,5,5,5,16,5,17,6,5,6,16,6,17,7,5,7,16,8,5,8,6,8,15,8,16,9,6,9,7,9,8,9,13,9,14,9,15,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,
b,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,6,2,7,2,14,2,15,3,5,3,15,3,16,4,5,4,16,5,5,5,16,6,5,6,16,7,5,7,16,8,5,8,6,8,15,8,16,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,8,10,9,10,10,10,11,10,12,10,13,
b,0,0,0,1,0,2,0,3,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,3,5,3,6,3,14,3,15,4,5,4,15,5,4,5,5,5,16,6,4,6,16,7,4,7,5,7,16,8,5,8,15,8,16,9,5,9,6,9,7,9,14,9,15,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,9,11,10,11,11,11,12,
b,0,0,0,1,0,2,0,3,0,4,0,5,0,6,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,6,2,7,2,12,2,13,2,14,2,15,2,16,3,5,3,14,3,15,4,4,4,5,4,15,5,4,5,16,6,4,6,16,7,4,7,5,7,16,8,5,8,15,9,5,9,6,9,7,9,14,9,15,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,10,11,11,
b,0,0,0,1,0,2,0,3,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,3,5,3,6,3,12,3,13,3,14,3,15,3,16,4,4,4,5,4,14,4,15,5,4,5,15,6,4,6,15,6,16,7,4,7,16,8,4,8,5,8,15,8,16,9,5,9,6,9,15,10,5,10,6,10,7,10,8,10,13,10,14,11,7,11,8,11,9,11,10,11,11,11,12,11,13,
b,0,0,0,1,1,0,1,1,1,2,1,3,1,4,1,5,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,4,5,4,13,4,14,4,15,4,16,5,4,5,14,5,15,6,4,6,15,7,4,7,15,8,4,8,15,9,4,9,5,9,15,10,5,10,6,10,14,10,15,11,6,11,7,11,8,11,9,11,12,11,13,11,14,12,8,12,9,12,10,12,11,12,12,12,13,
b,0,0,0,1,0,2,0,3,1,1,1,2,1,3,1,4,1,5,1,6,1,7,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,5,3,6,3,7,3,10,3,11,3,12,3,13,3,14,3,15,4,4,4,5,4,13,4,14,4,15,4,16,5,4,5,14,6,3,6,4,6,15,7,3,7,4,7,15,8,4,8,15,9,4,9,5,9,15,10,5,10,6,10,14,11,6,11,7,11,8,11,9,11,10,11,11,11,12,11,13,11,14,12,8,12,9,12,10,12,11,12,12,
b,0,0,0,1,1,0,1,1,1,2,1,3,1,4,1,5,2,4,2,5,2,6,2,7,2,8,3,6,3,7,3,8,3,9,3,10,3,11,3,12,4,5,4,11,4,12,4,13,4,14,4,15,5,4,5,13,5,14,5,15,5,16,6,3,6,4,6,14,7,3,7,15,8,3,8,4,8,15,9,3,9,4,9,15,10,4,10,5,10,14,10,15,11,5,11,6,11,7,11,13,11,14,12,6,12,7,12,8,12,9,12,10,12,11,12,12,12,13,13,10,13,11,
b,0,0,0,1,0,2,0,3,1,2,1,3,1,4,1,5,1,6,2,5,2,6,2,7,2,8,2,9,3,6,3,7,3,8,3,9,3,10,3,11,3,12,4,4,4,5,4,12,4,13,4,14,4,15,5,4,5,13,5,14,5,15,5,16,6,3,6,14,7,3,7,15,8,3,8,4,8,15,9,3,9,4,9,14,9,15,10,4,10,5,10,14,11,5,11,6,11,7,11,8,11,12,11,13,11,14,12,7,12,8,12,9,12,10,12,11,12,12,12,13,
b,0,0,0,1,0,2,1,1,1,2,1,3,1,4,2,4,2,5,2,6,2,7,3,6,3,7,3,8,3,9,3,10,4,5,4,6,4,9,4,10,4,11,4,12,4,13,5,4,5,12,5,13,5,14,5,15,6,3,6,4,6,13,6,14,6,15,6,16,7,3,7,14,8,3,8,15,9,3,9,4,9,15,10,3,10,4,10,14,11,4,11,5,11,6,11,13,11,14,12,5,12,6,12,7,12,8,12,9,12,11,12,12,12,13,13,7,13,8,13,9,13,10,13,11,13,12,
c,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,9,1,10,2,1,2,2,2,3,2,11,3,1,3,11,3,12,4,0,4,1,4,12,5,0,5,12,6,0,6,11,6,12,7,0,7,1,7,11,8,1,8,10,8,11,9,1,9,2,9,3,10,2,10,3,10,4,
c,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,9,1,10,2,1,2,2,2,10,2,11,3,0,3,1,3,11,4,0,4,11,4,12,5,0,5,11,5,12,6,0,6,11,7,0,7,10,7,11,8,1,8,9,8,10,9,1,9,2,9,3,9,4,10,2,10,3,10,4,
c,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,2,1,3,1,4,1,5,1,10,1,11,2,1,2,2,2,3,2,11,2,12,3,1,3,12,4,1,4,12,5,0,5,1,5,12,6,1,6,12,7,1,7,11,7,12,8,1,8,2,8,10,8,11,9,2,9,3,9,4,10,4,
c,0,7,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,3,2,4,2,10,2,11,3,1,3,2,3,11,4,0,4,1,4,12,5,0,5,1,5,12,6,0,6,12,7,0,7,1,7,11,7,12,8,1,8,10,8,11,9,1,9,2,9,10,9,11,10,2,10,3,10,4,11,4,
c,0,6,0,7,0,8,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,3,2,10,2,11,3,1,3,11,4,0,4,1,4,11,4,12,5,0,5,12,6,0,6,11,6,12,7,0,7,11,7,12,8,0,8,1,8,10,8,11,9,1,9,2,9,9,9,10,10,2,10,3,
c,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,0,3,1,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,11,8,0,8,1,8,10,8,11,9,1,9,2,9,3,9,9,9,10,10,2,10,3,
c,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,3,2,11,3,1,3,12,4,0,4,1,4,12,5,0,5,1,5,12,6,0,6,1,6,12,7,1,7,11,7,12,8,1,8,2,8,10,8,11,9,2,9,3,9,4,9,10,10,3,10,4,
c,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,8,1,9,1,10,2,1,2,2,2,11,3,0,3,1,3,11,3,12,4,0,4,12,5,0,5,12,6,0,6,12,7,0,7,1,7,11,7,12,8,1,8,2,8,10,8,11,9,2,9,3,9,9,9,10,
c,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,4,1,9,1,10,2,1,2,10,2,11,3,0,3,1,3,11,4,0,4,11,4,12,5,0,5,12,6,0,6,11,6,12,7,0,7,1,7,11,8,1,8,2,8,9,8,10,8,11,9,2,9,3,9,9,
c,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,9,1,10,2,0,2,1,2,10,2,11,3,0,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,1,7,10,7,11,8,1,8,2,8,8,8,9,8,10,9,2,9,8,9,9,
c,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,3,2,10,2,11,3,1,3,11,4,0,4,1,4,11,4,12,5,0,5,12,6,0,6,11,6,12,7,1,7,11,8,1,8,2,8,10,8,11,9,2,9,3,9,9,9,10,10,3,10,9,
c,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,0,3,1,3,11,3,12,4,0,4,12,5,0,5,12,6,0,6,12,7,0,7,1,7,11,7,12,8,1,8,2,8,10,8,11,9,2,9,3,9,9,9,10,10,9,
c,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,4,1,7,1,8,1,9,1,10,2,1,2,10,2,11,3,0,3,1,3,11,4,0,4,11,4,12,5,0,5,12,6,0,6,11,6,12,7,0,7,1,7,11,8,1,8,2,8,10,8,11,9,2,9,8,9,9,9,10,10,8,
c,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,8,1,9,1,10,2,0,2,1,2,10,2,11,3,0,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,1,7,11,8,1,8,2,8,9,8,10,8,11,9,2,9,8,9,9,
c,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,3,2,9,2,10,2,11,3,1,3,11,3,12,4,1,4,12,5,0,5,1,5,12,6,0,6,1,6,12,7,1,7,12,8,1,8,2,8,11,8,12,9,2,9,3,9,10,9,11,10,8,10,9,10,10,
c,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,1,3,11,3,12,4,0,4,1,4,12,5,0,5,12,6,0,6,1,6,12,7,1,7,12,8,1,8,2,8,11,9,2,9,8,9,9,9,10,9,11,10,8,10,9,
c,0,3,0,4,0,5,0,6,0,7,0,8,1,1,1,2,1,3,1,7,1,8,1,9,1,10,2,1,2,10,2,11,3,0,3,1,3,11,3,12,4,0,4,12,5,0,5,12,6,0,6,1,6,12,7,0,7,1,7,11,7,12,8,1,8,2,8,10,8,11,9,8,9,9,9,10,10,8,10,9,
c,0,5,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,8,2,9,2,10,3,0,3,1,3,10,3,11,4,0,4,11,5,0,5,11,5,12,6,0,6,12,7,0,7,1,7,11,7,12,8,0,8,1,8,2,8,11,9,1,9,2,9,10,9,11,10,7,10,8,10,9,10,10,11,7,
c,0,3,0,4,0,5,0,6,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,8,2,9,2,10,3,0,3,10,3,11,4,0,4,11,5,0,5,11,5,12,6,0,6,11,6,12,7,0,7,1,7,11,8,1,8,2,8,11,9,9,9,10,10,7,10,8,10,9,
c,0,2,0,3,0,4,0,5,0,6,0,7,1,1,1,2,1,3,1,6,1,7,1,8,1,9,2,0,2,1,2,9,2,10,3,0,3,10,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,1,7,11,8,1,8,10,8,11,9,9,9,10,10,7,10,8,10,9,
c,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,8,1,9,1,10,2,1,2,10,2,11,3,1,3,11,3,12,4,0,4,1,4,12,5,0,5,1,5,12,6,1,6,12,7,1,7,2,7,12,8,2,8,11,9,8,9,9,9,10,9,11,10,7,10,8,10,9,
d,0,7,0,8,0,9,0,10,0,11,0,12,1,5,1,6,1,7,1,8,1,11,1,12,1,13,2,4,2,5,2,13,2,14,3,3,3,4,3,14,4,3,4,14,5,3,5,14,6,3,6,14,7,3,7,13,7,14,7,15,8,4,8,12,8,13,8,14,8,15,9,5,9,6,9,8,9,9,9,10,9,11,9,12,10,5,10,6,10,7,10,8,10,9,11,3,11,4,11,5,11,6,11,7,12,0,12,1,12,2,12,3,12,4,13,0,13,1,
d,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,5,1,6,1,7,1,8,1,12,1,13,1,14,2,4,2,5,2,6,2,14,2,15,3,4,3,5,3,15,4,3,4,4,4,15,5,3,5,4,5,15,6,3,6,4,6,14,6,15,7,4,7,14,7,15,7,16,8,4,8,5,8,12,8,13,8,14,8,15,8,16,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,6,10,7,10,8,10,9,10,10,11,2,11,3,11,4,11,5,11,6,12,0,12,1,12,2,12,3,
d,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,5,1,6,1,7,1,12,1,13,1,14,2,4,2,5,2,14,3,3,3,4,3,14,3,15,4,3,4,15,5,3,5,15,6,3,6,14,7,4,7,13,7,14,7,15,7,16,8,4,8,5,8,11,8,12,8,13,8,14,8,15,8,16,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,4,10,5,10,6,10,7,10,8,10,9,11,1,11,2,11,3,11,4,11,5,12,0,12,1,12,2,
d,0,10,0,11,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,5,2,6,2,7,2,8,2,13,2,14,2,15,3,4,3,5,3,6,3,15,4,4,4,5,4,15,5,4,5,15,5,16,6,4,6,15,7,4,7,15,8,4,8,5,8,14,8,15,8,16,9,5,9,6,9,12,9,13,9,14,9,15,9,16,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,11,3,11,4,11,5,11,6,11,7,11,8,11,9,12,0,12,1,12,2,12,3,12,4,12,5,13,1,
d,0,9,0,10,0,11,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,5,2,6,2,7,2,13,2,14,3,4,3,5,3,14,3,15,4,4,4,15,5,3,5,4,5,15,6,4,6,15,7,4,7,14,7,15,8,4,8,5,8,13,8,14,8,15,8,16,9,5,9,6,9,11,9,12,9,13,9,14,9,15,9,16,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,11,1,11,2,11,3,11,4,11,5,11,6,11,7,12,0,12,1,12,2,
d,0,9,0,10,0,11,0,12,0,13,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,5,2,6,2,7,2,14,2,15,3,5,3,15,3,16,4,4,4,5,4,16,5,4,5,16,6,4,6,16,7,5,7,15,8,5,8,6,8,14,8,15,8,16,9,6,9,7,9,8,9,10,9,11,9,12,9,13,9,14,9,15,9,16,9,17,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,11,0,11,1,11,2,11,3,11,4,11,5,11,6,
d,0,8,0,9,0,10,0,11,0,12,0,13,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,5,2,6,2,14,2,15,3,4,3,5,3,15,3,16,4,4,4,16,5,4,5,16,6,4,6,15,6,16,7,4,7,5,7,15,8,5,8,6,8,13,8,14,8,15,8,16,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,11,0,11,1,11,2,11,3,
d,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,5,1,6,1,7,1,8,1,12,1,13,1,14,2,4,2,5,2,14,2,15,3,4,3,15,4,4,4,15,4,16,5,4,5,15,5,16,6,4,6,15,7,4,7,5,7,14,7,15,8,5,8,6,8,13,8,14,8,15,8,16,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,0,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,
d,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,1,6,1,7,1,8,1,13,1,14,1,15,2,5,2,6,2,15,2,16,3,5,3,16,4,4,4,5,4,16,5,4,5,5,5,16,6,5,6,16,7,5,7,6,7,15,8,6,8,7,8,13,8,14,8,15,8,16,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,0,10,1,10,2,10,3,10,4,10,5,10,6,
d,0,10,0,11,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,5,2,6,2,7,2,14,2,15,3,5,3,15,3,16,4,4,4,5,4,16,5,4,5,16,6,4,6,16,7,5,7,15,7,16,8,5,8,6,8,15,9,6,9,7,9,8,9,12,9,13,9,14,9,15,9,16,10,0,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,
d,0,10,0,11,0,12,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,6,2,7,2,8,2,14,2,15,2,16,3,6,3,16,4,5,4,6,4,16,4,17,5,5,5,17,6,5,6,6,6,16,6,17,7,6,7,16,8,7,8,15,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,9,17,10,0,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,10,17,
d,0,8,0,9,0,10,0,11,0,12,0,13,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,5,2,6,2,15,2,16,3,5,3,16,4,5,4,16,4,17,5,5,5,16,5,17,6,5,6,16,7,6,7,16,8,6,8,7,8,15,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,10,10,11,10,12,10,13,10,14,10,15,10,16,
d,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,6,1,7,1,8,1,12,1,13,1,14,1,15,2,5,2,6,2,15,2,16,3,5,3,16,4,5,4,16,5,5,5,16,6,5,6,16,7,6,7,15,7,16,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,14,8,15,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,14,10,15,10,16,
d,0,10,0,11,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,6,2,7,2,8,2,14,2,15,2,16,3,6,3,16,3,17,4,5,4,6,4,17,5,5,5,6,5,17,6,6,6,17,7,6,7,17,8,0,8,1,8,6,8,7,8,16,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,14,9,15,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,11,16,
d,0,9,0,10,0,11,0,12,0,13,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,6,2,7,2,14,2,15,2,16,3,5,3,6,3,16,3,17,4,5,4,16,4,17,5,5,5,17,6,5,6,6,6,17,7,6,7,16,7,17,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,16,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,13,9,14,9,15,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,11,16,
d,0,8,0,9,0,10,0,11,0,12,0,13,1,6,1,7,1,8,1,11,1,12,1,13,1,14,1,15,2,6,2,15,2,16,3,5,3,6,3,16,4,5,4,16,4,17,5,5,5,17,6,5,6,6,6,16,6,17,7,0,7,1,7,2,7,6,7,16,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,15,8,16,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,11,10,12,10,13,10,14,10,15,10,16,
d,0,8,0,9,0,10,0,11,0,12,0,13,0,14,1,7,1,8,1,14,1,15,1,16,2,6,2,7,2,16,2,17,3,6,3,17,4,6,4,17,4,18,5,6,5,17,5,18,6,6,6,7,6,17,7,0,7,1,7,2,7,3,7,4,7,5,7,6,7,7,7,17,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,16,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,13,10,14,10,15,10,16,
d,0,9,0,10,0,11,0,12,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,6,2,7,2,14,2,15,2,16,3,6,3,16,3,17,4,6,4,17,5,6,5,17,6,6,6,17,7,0,7,1,7,2,7,3,7,6,7,7,7,17,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,16,8,17,9,5,9,6,9,7,9,8,9,9,9,10,9,15,9,16,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,13,11,14,11,15,11,16,
d,0,8,0,9,0,10,0,11,0,12,0,13,1,7,1,8,1,9,1,11,1,12,1,13,1,14,1,15,2,6,2,7,2,14,2,15,2,16,3,6,3,16,3,17,4,6,4,17,5,6,5,17,6,0,6,1,6,6,6,17,7,0,7,1,7,2,7,3,7,4,7,5,7,6,7,7,7,17,8,3,8,4,8,5,8,6,8,7,8,8,8,16,9,7,9,8,9,9,9,10,9,11,9,14,9,15,10,10,10,11,10,12,10,13,10,14,10,15,11,14,11,15,11,16,
d,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,6,1,7,1,8,1,12,1,13,1,14,1,15,2,6,2,15,2,16,3,6,3,16,3,17,4,5,4,6,4,17,5,0,5,6,5,17,6,0,6,1,6,2,6,3,6,6,6,17,7,2,7,3,7,4,7,5,7,6,7,7,7,16,7,17,8,5,8,6,8,7,8,8,8,9,8,16,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,11,10,12,10,13,10,14,10,15,11,14,11,15,
d,0,9,0,10,0,11,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,6,2,7,2,13,2,14,2,15,3,6,3,15,3,16,4,5,4,6,4,16,4,17,5,5,5,16,5,17,6,0,6,1,6,6,6,17,7,1,7,2,7,3,7,4,7,5,7,6,7,17,8,3,8,4,8,5,8,6,8,7,8,16,9,6,9,7,9,8,9,9,9,15,9,16,10,9,10,10,10,11,10,12,10,13,10,14,11,12,11,13,11,14,11,15,12,14,12,15,
e,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,9,1,10,2,1,2,2,2,3,2,4,2,5,2,11,3,1,3,5,3,11,3,12,4,0,4,1,4,5,4,12,5,0,5,5,5,6,5,12,6,0,6,6,6,12,7,0,7,1,7,6,7,11,7,12,8,1,8,7,8,10,8,11,9,1,9,2,9,7,10,2,10,3,10,4,10,5,10,6,10,7,10,8,
e,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,9,1,10,2,1,2,2,2,4,2,10,2,11,3,0,3,1,3,5,3,11,4,0,4,5,4,11,4,12,5,0,5,5,5,11,5,12,6,0,6,6,6,11,6,12,7,0,7,6,7,11,8,1,8,6,8,10,8,11,9,1,9,2,9,6,9,7,9,10,10,2,10,3,10,4,10,5,10,6,10,7,
e,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,2,1,3,1,4,1,5,1,10,1,11,2,1,2,2,2,3,2,5,2,11,2,12,3,1,3,5,3,6,3,12,4,1,4,6,4,12,5,0,5,1,5,6,5,12,6,1,6,6,6,12,7,1,7,7,7,11,7,12,8,1,8,2,8,7,8,11,8,12,9,2,9,3,9,7,9,11,10,3,10,4,10,5,10,6,10,7,10,8,
e,0,6,0,7,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,3,2,4,2,5,2,10,2,11,3,1,3,2,3,5,3,11,4,0,4,1,4,5,4,12,5,0,5,1,5,5,5,6,5,12,6,0,6,6,6,12,7,0,7,1,7,6,7,12,8,1,8,6,8,11,8,12,9,1,9,2,9,6,9,7,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,11,3,11,4,11,5,11,6,11,7,
e,0,5,0,6,0,7,0,8,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,3,2,4,2,5,2,10,2,11,3,1,3,5,3,11,4,0,4,1,4,5,4,11,4,12,5,0,5,5,5,12,6,0,6,5,6,6,6,12,7,0,7,6,7,11,7,12,8,0,8,1,8,6,8,11,9,1,9,2,9,6,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,10,11,4,11,5,11,6,11,7,
e,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,4,2,5,2,10,2,11,3,0,3,1,3,5,3,11,4,0,4,5,4,11,5,0,5,5,5,11,5,12,6,0,6,5,6,11,6,12,7,0,7,5,7,6,7,11,8,0,8,1,8,6,8,10,8,11,9,1,9,2,9,6,9,9,9,10,10,2,10,3,10,4,10,5,10,6,11,4,11,5,
e,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,3,2,5,2,6,2,10,2,11,3,1,3,6,3,11,3,12,4,1,4,6,4,12,5,0,5,1,5,6,5,12,6,0,6,1,6,6,6,12,7,1,7,6,7,12,8,1,8,6,8,11,8,12,9,2,9,3,9,6,9,7,9,10,9,11,10,3,10,4,10,5,10,6,10,7,10,10,
e,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,8,1,9,1,10,2,1,2,2,2,5,2,10,2,11,3,0,3,1,3,5,3,6,3,11,3,12,4,0,4,5,4,6,4,12,5,0,5,6,5,12,6,0,6,6,6,12,7,0,7,1,7,6,7,11,7,12,8,1,8,6,8,10,8,11,9,2,9,3,9,5,9,6,9,10,9,11,10,3,10,4,10,5,10,6,
e,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,4,1,5,1,8,1,9,1,10,2,1,2,5,2,10,2,11,3,0,3,1,3,5,3,11,4,0,4,5,4,11,4,12,5,0,5,5,5,6,5,12,6,0,6,5,6,6,6,11,6,12,7,0,7,1,7,5,7,6,7,11,8,1,8,6,8,10,8,11,9,2,9,3,9,4,9,5,9,6,9,9,9,10,10,3,10,4,10,5,10,6,
e,0,6,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,5,2,9,2,10,3,0,3,1,3,5,3,10,3,11,4,0,4,5,4,11,5,0,5,5,5,11,6,0,6,5,6,11,7,0,7,5,7,11,8,0,8,5,8,11,9,1,9,2,9,5,9,9,9,10,9,11,10,2,10,3,10,4,10,5,10,9,10,10,11,4,11,5,
e,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,6,2,10,2,11,3,1,3,6,3,11,4,1,4,6,4,11,5,0,5,6,5,12,6,0,6,6,6,12,7,1,7,6,7,11,7,12,8,1,8,6,8,11,9,2,9,3,9,5,9,6,9,9,9,10,9,11,10,3,10,4,10,5,10,6,10,9,10,10,
e,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,6,2,10,2,11,3,1,3,6,3,11,3,12,4,0,4,6,4,12,5,0,5,6,5,12,6,0,6,6,6,12,7,0,7,1,7,6,7,11,7,12,8,1,8,6,8,11,9,2,9,3,9,4,9,5,9,6,9,9,9,10,9,11,10,3,10,4,10,5,10,6,10,9,10,10,
e,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,6,2,10,2,11,3,0,3,1,3,6,3,11,4,0,4,5,4,6,4,11,4,12,5,0,5,5,5,6,5,12,6,0,6,5,6,11,6,12,7,0,7,1,7,5,7,11,8,1,8,2,8,5,8,10,8,11,9,2,9,3,9,4,9,5,9,9,9,10,10,3,10,4,10,5,10,9,
e,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,5,1,6,1,8,1,9,1,10,2,0,2,1,2,5,2,6,2,10,2,11,3,0,3,5,3,11,4,0,4,5,4,11,5,0,5,5,5,11,6,0,6,5,6,11,7,0,7,1,7,5,7,11,8,1,8,2,8,5,8,10,8,11,9,2,9,3,9,4,9,5,9,8,9,9,9,10,10,4,10,5,10,8,10,9,
e,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,3,2,6,2,7,2,9,2,10,2,11,3,1,3,6,3,11,3,12,4,1,4,6,4,12,5,0,5,1,5,6,5,12,6,0,6,1,6,6,6,12,7,1,7,6,7,12,8,1,8,2,8,6,8,11,8,12,9,2,9,3,9,5,9,6,9,10,9,11,10,3,10,4,10,5,10,9,10,10,10,11,11,9,
e,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,6,2,10,2,11,3,1,3,6,3,11,3,12,4,0,4,1,4,6,4,12,5,0,5,6,5,12,6,0,6,1,6,6,6,12,7,1,7,5,7,6,7,12,8,1,8,2,8,5,8,11,8,12,9,2,9,3,9,4,9,5,9,10,9,11,10,3,10,4,10,5,10,9,10,10,
e,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,6,1,7,1,8,1,9,1,10,2,1,2,6,2,10,2,11,3,0,3,1,3,6,3,11,3,12,4,0,4,6,4,11,4,12,5,0,5,6,5,12,6,0,6,5,6,12,7,0,7,1,7,5,7,11,7,12,8,1,8,2,8,5,8,11,9,2,9,3,9,4,9,5,9,9,9,10,9,11,10,4,10,5,10,8,10,9,10,10,
e,0,5,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,6,2,7,2,8,2,9,2,10,3,0,3,1,3,6,3,10,3,11,4,0,4,6,4,11,5,0,5,5,5,6,5,11,5,12,6,0,6,5,6,11,6,12,7,0,7,5,7,11,7,12,8,0,8,1,8,5,8,11,9,1,9,2,9,3,9,4,9,5,9,10,9,11,10,2,10,3,10,4,10,8,10,9,10,10,11,4,11,8,11,9,
e,0,3,0,4,0,5,0,6,0,7,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,6,2,8,2,9,2,10,3,0,3,6,3,10,3,11,4,0,4,6,4,11,5,0,5,5,5,11,5,12,6,0,6,5,6,11,6,12,7,0,7,5,7,11,8,0,8,1,8,4,8,5,8,11,9,1,9,2,9,3,9,4,9,10,9,11,10,3,10,4,10,8,10,9,10,10,11,7,11,8,
e,0,2,0,3,0,4,0,5,0,6,0,7,1,1,1,2,1,3,1,6,1,7,1,8,1,9,2,0,2,1,2,6,2,9,2,10,3,0,3,6,3,10,3,11,4,0,4,5,4,6,4,11,5,0,5,5,5,11,6,0,6,5,6,11,7,0,7,4,7,5,7,11,8,0,8,1,8,2,8,4,8,10,8,11,9,1,9,2,9,3,9,4,9,9,9,10,10,3,10,4,10,7,10,8,10,9,11,7,
e,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,7,1,8,1,9,1,10,2,1,2,7,2,10,2,11,3,1,3,6,3,7,3,11,3,12,4,0,4,1,4,6,4,12,5,0,5,1,5,6,5,12,6,1,6,5,6,6,6,12,7,1,7,2,7,5,7,12,8,2,8,3,8,4,8,5,8,11,9,3,9,4,9,5,9,10,9,11,10,8,10,9,10,10,
f,0,15,1,13,1,14,1,15,2,10,2,11,2,12,2,13,3,4,3,7,3,8,3,9,3,10,3,11,4,4,4,5,4,6,4,7,4,8,5,2,5,3,5,4,5,5,6,0,6,1,6,2,6,5,7,0,7,1,7,5,8,0,8,1,9,0,9,1,10,1,
f,0,15,1,12,1,13,1,14,1,15,2,3,2,4,2,9,2,10,2,11,2,12,2,13,3,4,3,6,3,7,3,8,3,9,3,10,4,3,4,4,4,5,4,6,4,7,5,1,5,2,5,3,5,4,5,5,6,0,6,1,6,5,7,0,7,5,8,0,9,0,9,1,
f,0,13,0,14,0,15,0,16,1,4,1,9,1,10,1,11,1,12,1,13,1,14,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,2,3,3,3,4,3,5,3,6,3,7,4,1,4,2,4,3,4,4,4,5,5,0,5,1,5,6,6,0,6,1,6,6,7,1,8,1,
f,0,4,0,12,0,13,0,14,0,15,0,16,1,4,1,8,1,9,1,10,1,11,1,12,1,13,1,14,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,1,3,2,3,3,3,4,3,5,3,6,4,0,4,1,4,2,4,5,5,0,5,1,5,5,6,0,6,1,7,0,7,1,
f,0,4,0,12,0,13,0,14,0,15,0,16,1,4,1,5,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,3,0,3,1,3,2,3,3,3,4,3,5,4,0,4,1,4,5,5,0,5,5,6,0,7,0,
f,0,4,0,11,0,12,0,13,0,14,0,15,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,1,2,2,2,3,2,4,2,5,2,6,2,7,3,0,3,1,3,2,3,4,3,5,4,0,4,5,5,0,5,5,6,0,
f,0,5,1,5,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,3,1,3,2,3,3,3,4,3,5,3,6,4,0,4,1,4,5,5,0,5,1,5,5,5,6,6,0,6,1,7,1,
f,0,5,1,5,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,3,0,3,1,3,2,3,5,4,0,4,1,4,5,5,0,5,5,6,0,6,1,
f,0,5,1,5,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,4,0,4,1,4,5,5,0,5,5,6,0,7,0,
f,0,5,1,5,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,3,0,3,1,3,2,3,3,3,4,3,5,4,0,4,5,5,0,5,5,6,0,
f,0,5,1,5,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,4,0,4,1,4,5,5,0,5,5,6,0,6,5,
f,0,6,1,5,1,6,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,4,0,4,1,4,5,5,0,5,1,5,5,6,0,6,1,
f,0,5,0,6,1,5,1,6,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,3,0,3,1,3,5,3,6,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,4,0,4,5,5,0,5,5,
f,0,6,1,5,2,1,2,2,2,3,2,4,2,5,2,6,2,7,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,4,0,4,5,4,13,4,14,4,15,4,16,5,0,5,5,6,0,
f,0,6,1,2,1,3,1,5,1,6,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,0,3,1,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,4,0,4,5,4,14,4,15,4,16,5,0,5,5,
f,0,5,0,6,1,1,1,2,1,3,1,4,1,5,1,6,2,0,2,1,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,0,3,5,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,4,0,4,5,4,15,4,16,
f,0,7,1,2,1,3,1,4,1,6,1,7,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,3,1,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,4,0,4,1,4,6,4,11,4,12,4,13,4,14,4,15,4,16,4,17,5,0,5,1,5,6,5,16,5,17,
f,0,7,1,1,1,2,1,3,1,4,1,5,1,6,1,7,2,1,2,2,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,0,3,1,3,6,3,8,3,9,3,10,3,11,3,12,3,13,3,14,4,0,4,1,4,6,4,12,4,13,4,14,4,15,4,16,4,17,5,16,5,17,
f,0,7,1,2,1,3,1,4,1,6,1,7,2,1,2,2,2,3,2,4,2,5,2,6,2,7,3,0,3,1,3,6,3,7,3,8,3,9,3,10,3,11,4,0,4,1,4,6,4,10,4,11,4,12,4,13,4,14,5,5,5,13,5,14,5,15,5,16,5,17,6,17,
f,0,7,1,1,1,2,1,3,1,4,1,5,1,6,1,7,2,1,2,2,2,4,2,5,2,6,2,7,2,8,3,0,3,1,3,6,3,7,3,8,3,9,3,10,3,11,4,0,4,5,4,6,4,11,4,12,4,13,4,14,4,15,5,5,5,14,5,15,5,16,5,17,6,17,
f,0,7,1,2,1,3,1,4,1,7,2,1,2,2,2,3,2,4,2,5,2,6,2,7,3,0,3,1,3,6,3,7,3,8,3,9,4,0,4,6,4,9,4,10,4,11,4,12,5,5,5,11,5,12,5,13,5,14,5,15,6,14,6,15,6,16,6,17,7,17,
g,0,12,0,13,0,14,1,14,1,15,2,4,2,5,2,6,2,7,2,8,2,9,2,15,2,16,3,2,3,3,3,4,3,5,3,9,3,10,3,16,4,1,4,2,4,10,4,11,4,16,5,0,5,1,5,11,5,16,5,17,6,0,6,1,6,11,6,16,7,0,7,11,7,15,7,16,8,0,8,11,8,14,8,15,8,16,9,0,9,1,9,10,9,11,9,12,9,13,9,14,10,1,10,9,10,10,10,11,10,12,11,2,11,3,11,4,11,6,11,7,11,8,11,9,11,10,12,3,12,4,12,5,12,6,12,7,13,2,13,3,13,4,
g,0,12,0,13,0,14,1,14,1,15,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,15,2,16,3,2,3,3,3,4,3,9,3,10,3,16,4,1,4,2,4,10,4,11,4,16,5,0,5,1,5,11,5,16,6,0,6,11,6,16,7,0,7,11,7,15,7,16,8,0,8,11,8,14,8,15,9,0,9,10,9,11,9,12,9,13,9,14,10,1,10,8,10,9,10,10,10,11,10,12,11,2,11,3,11,4,11,5,11,6,11,7,11,8,11,9,12,2,12,3,12,4,12,5,12,6,13,2,13,3,
g,0,13,0,14,0,15,1,14,1,15,1,16,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,16,3,2,3,3,3,4,3,10,3,11,3,16,3,17,4,1,4,2,4,11,4,17,5,1,5,12,5,17,6,0,6,1,6,12,6,17,7,0,7,1,7,12,7,16,7,17,8,1,8,11,8,15,8,16,9,1,9,10,9,11,9,12,9,13,9,14,9,15,10,2,10,9,10,10,10,11,10,12,10,13,11,3,11,4,11,5,11,6,11,7,11,8,11,9,11,10,12,2,12,3,12,4,12,5,12,6,13,2,13,3,
g,0,13,0,14,1,6,1,7,1,14,1,15,1,16,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,16,3,2,3,3,3,4,3,10,3,11,3,16,4,1,4,2,4,11,4,16,4,17,5,0,5,1,5,11,5,12,5,17,6,0,6,11,6,12,6,16,6,17,7,0,7,11,7,16,7,17,8,0,8,1,8,11,8,15,8,16,9,1,9,10,9,11,9,12,9,13,9,14,9,15,10,2,10,8,10,9,10,10,10,11,10,12,10,13,11,3,11,4,11,5,11,6,11,7,11,8,11,9,12,2,12,3,12,4,12,5,
g,0,13,0,14,1,5,1,6,1,7,1,8,1,14,1,15,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,15,2,16,3,1,3,2,3,3,3,10,3,11,3,16,4,0,4,1,4,11,4,16,5,0,5,11,5,16,5,17,6,0,6,11,6,16,6,17,7,0,7,11,7,16,8,0,8,11,8,15,8,16,9,1,9,10,9,11,9,12,9,13,9,14,9,15,10,2,10,3,10,7,10,8,10,9,10,10,10,11,10,12,10,13,11,2,11,3,11,4,11,5,11,6,11,7,11,8,12,1,12,2,12,3,12,4,
g,0,13,0,14,1,4,1,5,1,6,1,7,1,8,1,13,1,14,1,15,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,15,2,16,3,1,3,2,3,10,3,16,4,0,4,1,4,10,4,11,4,16,5,0,5,11,5,16,6,0,6,11,6,16,7,0,7,11,7,16,8,0,8,10,8,15,8,16,9,0,9,1,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,2,10,3,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,11,1,11,2,11,3,11,4,11,5,11,6,11,7,11,8,12,1,12,2,
g,0,14,1,4,1,5,1,6,1,7,1,8,1,9,1,14,1,15,1,16,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,16,3,1,3,2,3,10,3,11,3,17,4,1,4,11,4,12,4,17,5,0,5,1,5,12,5,17,6,0,6,1,6,12,6,17,7,0,7,1,7,11,7,12,7,16,7,17,8,1,8,11,8,15,8,16,9,1,9,2,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,1,11,2,11,3,11,4,11,5,11,6,11,7,
g,0,14,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,14,1,15,1,16,2,2,2,3,2,4,2,9,2,10,2,16,3,1,3,2,3,10,3,11,3,16,3,17,4,0,4,1,4,11,4,17,5,0,5,11,5,12,5,17,6,0,6,11,6,12,6,17,7,0,7,11,7,16,7,17,8,1,8,10,8,11,8,15,8,16,9,1,9,2,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,1,11,2,11,3,11,4,11,5,11,6,
g,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,14,0,15,1,1,1,2,1,3,1,9,1,10,1,15,1,16,2,0,2,1,2,10,2,11,2,16,3,0,3,11,3,16,3,17,4,0,4,11,4,16,4,17,5,0,5,11,5,16,5,17,6,0,6,11,6,16,7,1,7,10,7,15,7,16,8,1,8,2,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,0,10,1,10,2,10,3,
g,0,4,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,14,1,15,2,1,2,2,2,9,2,10,2,15,2,16,3,0,3,1,3,10,3,11,3,16,4,0,4,11,4,16,5,0,5,11,5,16,6,0,6,11,6,16,7,0,7,11,7,16,8,1,8,10,8,15,8,16,9,1,9,2,9,3,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,0,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,
g,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,15,2,1,2,2,2,3,2,9,2,10,2,11,2,15,2,16,3,1,3,11,3,16,4,0,4,1,4,11,4,12,4,16,4,17,5,0,5,12,5,17,6,0,6,1,6,11,6,12,6,16,6,17,7,1,7,11,7,16,8,2,8,10,8,15,8,16,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,0,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,
g,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,15,1,16,2,1,2,2,2,10,2,11,2,16,3,0,3,1,3,11,3,16,3,17,4,0,4,11,4,12,4,17,5,0,5,12,5,17,6,0,6,1,6,11,6,12,6,17,7,1,7,11,7,16,7,17,8,1,8,2,8,10,8,16,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,
g,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,8,1,9,1,10,1,15,2,0,2,1,2,10,2,11,2,15,2,16,3,0,3,11,3,16,3,17,4,0,4,11,4,17,5,0,5,11,5,17,6,0,6,11,6,16,6,17,7,1,7,10,7,11,7,16,8,1,8,2,8,3,8,9,8,10,8,15,8,16,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,
g,0,5,0,6,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,8,2,9,2,10,2,15,3,0,3,1,3,10,3,11,3,15,3,16,4,0,4,11,4,16,5,0,5,11,5,16,5,17,6,0,6,11,6,16,6,17,7,0,7,11,7,16,8,1,8,10,8,16,9,0,9,1,9,2,9,3,9,9,9,10,9,15,9,16,10,0,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,8,11,9,11,10,11,11,11,12,11,13,
g,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,2,15,2,16,3,1,3,11,3,12,3,16,3,17,4,1,4,12,4,17,5,1,5,12,5,17,6,1,6,12,6,17,7,1,7,11,7,12,7,17,8,1,8,2,8,11,8,17,9,0,9,1,9,2,9,3,9,4,9,5,9,9,9,10,9,16,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,11,10,11,11,11,12,11,13,11,14,
g,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,2,15,2,16,3,1,3,11,3,12,3,16,3,17,4,0,4,1,4,11,4,12,4,17,5,0,5,1,5,12,5,17,6,1,6,12,6,17,7,1,7,11,7,17,8,0,8,1,8,2,8,3,8,10,8,11,8,16,8,17,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,16,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,11,11,12,11,13,11,14,
g,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,8,1,9,1,10,2,1,2,10,2,11,2,15,2,16,3,0,3,1,3,11,3,15,3,16,4,0,4,11,4,12,4,16,4,17,5,0,5,11,5,12,5,17,6,1,6,11,6,12,6,17,7,1,7,2,7,11,7,16,7,17,8,0,8,1,8,2,8,3,8,10,8,16,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,15,9,16,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,11,11,12,11,13,11,14,
g,0,5,0,6,0,7,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,3,2,9,2,10,2,11,3,1,3,2,3,11,3,12,3,16,4,1,4,12,4,16,4,17,5,1,5,12,5,13,5,17,5,18,6,1,6,12,6,13,6,18,7,2,7,12,7,17,7,18,8,0,8,1,8,2,8,3,8,11,8,12,8,17,9,0,9,1,9,2,9,3,9,4,9,5,9,10,9,11,9,17,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,16,10,17,11,8,11,9,11,10,11,11,11,12,11,13,11,14,11,15,11,16,12,12,12,13,12,14,
g,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,10,2,11,3,1,3,11,3,12,3,16,4,1,4,12,4,16,4,17,5,1,5,12,5,17,6,1,6,12,6,17,6,18,7,1,7,2,7,12,7,17,8,0,8,1,8,2,8,3,8,11,8,12,8,17,9,1,9,2,9,3,9,4,9,5,9,6,9,9,9,10,9,17,10,5,10,6,10,7,10,8,10,9,10,10,10,16,11,8,11,9,11,10,11,11,11,12,11,13,11,14,11,15,11,16,12,12,12,13,12,14,
g,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,1,3,11,3,12,3,16,4,1,4,12,4,16,4,17,5,1,5,12,5,17,6,1,6,12,6,17,7,0,7,1,7,2,7,11,7,12,7,17,8,0,8,1,8,2,8,3,8,11,8,17,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,16,9,17,10,6,10,7,10,8,10,9,10,10,10,15,10,16,11,9,11,10,11,11,11,12,11,13,11,14,11,15,12,12,12,13,
g,0,6,0,7,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,3,2,9,2,10,2,11,3,2,3,11,3,12,4,2,4,12,4,13,4,17,5,2,5,13,5,17,5,18,6,2,6,13,6,18,7,2,7,13,7,18,8,0,8,1,8,2,8,3,8,12,8,13,8,18,9,2,9,3,9,4,9,5,9,11,9,12,9,18,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,17,11,7,11,8,11,9,11,10,11,11,11,16,11,17,12,10,12,11,12,12,12,13,12,14,12,15,12,16,13,14,
h,0,15,1,12,1,13,1,14,1,15,1,16,2,9,2,10,2,11,2,12,2,13,3,7,3,8,3,9,3,10,4,4,4,5,4,6,4,7,4,8,5,1,5,2,5,3,5,4,5,5,5,6,5,7,6,0,6,1,6,2,6,6,7,6,8,6,8,17,8,18,9,6,9,7,9,15,9,16,9,17,9,18,10,7,10,8,10,12,10,13,10,14,10,15,11,7,11,8,11,9,11,10,11,11,11,12,11,13,12,9,
h,0,15,1,12,1,13,1,14,1,15,1,16,2,8,2,9,2,10,2,11,2,12,2,13,3,5,3,6,3,7,3,8,3,9,4,2,4,3,4,4,4,5,4,6,4,7,5,0,5,1,5,2,5,3,5,6,6,0,6,6,7,6,8,6,8,17,8,18,9,6,9,7,9,14,9,15,9,16,9,17,9,18,10,6,10,7,10,8,10,11,10,12,10,13,10,14,10,15,11,7,11,8,11,9,11,10,11,11,11,12,
h,0,14,0,15,1,11,1,12,1,13,1,14,1,15,2,7,2,8,2,9,2,10,2,11,2,12,3,4,3,5,3,6,3,7,3,8,3,9,4,0,4,1,4,2,4,3,4,4,4,5,4,6,4,7,5,0,5,1,5,2,5,6,6,6,7,5,7,6,8,6,8,17,8,18,9,6,9,13,9,14,9,15,9,16,9,17,9,18,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,7,11,8,11,9,11,10,11,11,
h,0,15,0,16,1,11,1,12,1,13,1,14,1,15,1,16,2,7,2,8,2,9,2,10,2,11,2,12,2,13,3,3,3,4,3,5,3,6,3,7,3,8,3,9,4,0,4,1,4,2,4,3,4,4,4,5,4,7,5,1,5,7,6,6,7,6,8,6,8,7,8,18,9,6,9,7,9,14,9,15,9,16,9,17,9,18,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,8,11,9,11,10,11,11,
h,0,15,0,16,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,4,0,4,1,4,2,4,6,4,7,5,6,6,6,7,6,8,6,8,17,8,18,9,6,9,7,9,13,9,14,9,15,9,16,9,17,9,18,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,9,
h,0,14,0,15,0,16,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,7,4,6,5,6,6,5,6,6,7,5,7,6,8,6,8,17,9,6,9,7,9,11,9,12,9,13,9,14,9,15,9,16,9,17,9,18,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,
h,0,13,0,14,0,15,0,16,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,3,0,3,1,3,2,3,6,3,7,4,6,5,5,6,5,7,5,7,6,8,5,8,6,8,17,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,9,17,10,7,10,8,10,9,10,10,10,11,10,12,
h,0,12,0,13,0,14,0,15,0,16,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,3,6,4,5,5,5,6,5,7,5,8,5,8,6,8,16,8,17,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,9,17,10,7,10,8,10,9,10,10,10,11,
h,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,2,2,6,2,7,3,5,3,6,4,5,5,5,6,5,7,5,8,5,8,6,8,15,8,16,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,
h,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,2,7,3,6,4,5,4,6,5,5,6,5,6,6,7,5,7,6,8,6,8,7,8,8,8,14,8,15,8,16,8,17,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,9,17,
h,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,2,7,3,6,4,6,5,5,6,5,6,6,7,6,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,9,17,
h,0,0,0,1,0,2,0,3,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,6,2,7,3,6,4,5,5,5,6,5,7,5,8,5,8,6,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,
h,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,6,2,7,3,5,4,5,5,5,6,4,6,5,7,5,8,5,8,6,8,7,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,12,10,13,10,14,10,15,10,16,
h,0,0,0,1,0,2,0,3,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,3,6,4,5,5,4,5,5,6,4,7,4,7,5,8,4,8,5,9,5,9,6,9,7,9,8,9,9,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,14,11,15,
h,0,0,0,1,0,2,0,3,0,4,0,5,0,6,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,6,2,7,2,10,2,11,2,12,2,13,2,14,2,15,2,16,3,5,4,4,4,5,5,4,6,4,7,4,7,5,8,4,8,5,8,6,9,5,9,6,9,7,9,8,9,9,9,10,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,11,15,
h,0,0,0,1,0,2,0,3,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,3,5,3,6,3,12,3,13,3,14,3,15,3,16,4,5,5,4,6,4,7,4,8,4,8,5,9,4,9,5,9,6,10,5,10,6,10,7,10,8,10,9,10,10,10,11,11,9,11,10,11,11,11,12,11,13,11,14,11,15,
h,0,0,0,1,1,0,1,1,1,2,1,3,1,4,1,5,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,4,5,4,13,4,14,4,15,4,16,5,4,6,4,7,4,8,4,9,4,9,5,10,4,10,5,10,6,10,7,11,6,11,7,11,8,11,9,11,10,11,11,11,12,12,10,12,11,12,12,12,13,12,14,
h,0,0,0,1,0,2,0,3,1,1,1,2,1,3,1,4,1,5,1,6,1,7,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,6,3,9,3,10,3,11,3,12,3,13,3,14,3,15,4,4,4,5,4,13,4,14,4,15,4,16,5,4,6,3,6,4,7,3,7,4,8,3,8,4,9,4,9,5,10,5,10,6,10,7,10,8,11,7,11,8,11,9,11,10,11,11,11,12,12,11,12,12,12,13,12,14,
h,0,0,0,1,1,0,1,1,1,2,1,3,1,4,1,5,2,3,2,4,2,5,2,6,2,7,2,8,3,6,3,7,3,8,3,9,3,10,3,11,3,12,4,5,4,10,4,11,4,12,4,13,4,14,4,15,5,4,5,14,5,15,5,16,6,3,6,4,7,3,7,4,8,3,8,4,9,3,9,4,10,4,10,5,10,6,11,5,11,6,11,7,11,8,11,9,12,8,12,9,12,10,12,11,12,12,12,13,13,12,13,13,13,14,
h,0,0,0,1,0,2,0,3,1,2,1,3,1,4,1,5,1,6,2,5,2,6,2,7,2,8,2,9,3,6,3,7,3,8,3,9,3,10,3,11,3,12,4,4,4,5,4,11,4,12,4,13,4,14,4,15,5,4,5,14,5,15,5,16,6,3,7,3,8,3,8,4,9,3,9,4,10,4,10,5,10,6,10,7,11,6,11,7,11,8,11,9,11,10,12,9,12,10,12,11,12,12,12,13,13,12,13,13,
h,0,0,0,1,0,2,1,1,1,2,1,3,1,4,2,4,2,5,2,6,2,7,3,6,3,7,3,8,3,9,3,10,4,5,4,6,4,9,4,10,4,11,4,12,4,13,5,4,5,12,5,13,5,14,5,15,6,3,6,4,6,15,6,16,7,3,8,3,9,3,9,4,10,3,10,4,10,5,11,4,11,5,11,6,11,7,12,7,12,8,12,9,12,10,13,9,13,10,13,11,13,12,13,13,14,12,14,13,
i,0,15,1,12,1,13,1,14,1,15,1,16,2,9,2,10,2,11,2,12,2,13,3,7,3,8,3,9,3,10,4,5,4,6,4,7,5,1,5,5,6,0,6,1,
i,0,15,1,12,1,13,1,14,1,15,1,16,2,9,2,10,2,11,2,12,2,13,3,5,3,6,3,7,3,8,3,9,3,10,4,5,4,6,5,0,5,1,6,0,
i,0,14,0,15,1,11,1,12,1,13,1,14,1,15,2,7,2,8,2,9,2,10,2,11,2,12,3,4,3,5,3,6,3,7,3,8,3,9,4,5,5,0,5,1,
i,0,15,0,16,1,11,1,12,1,13,1,14,1,15,1,16,2,7,2,8,2,9,2,10,2,11,2,12,2,13,3,5,3,6,3,7,3,8,3,9,4,0,4,1,5,1,
i,0,15,0,16,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,3,1,3,5,3,6,3,7,4,0,4,1,
i,0,14,0,15,0,16,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,0,3,1,3,5,
i,0,13,0,14,0,15,0,16,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,5,2,6,2,7,2,8,2,9,3,0,3,1,
i,0,12,0,13,0,14,0,15,0,16,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,5,2,6,2,7,
i,0,10,0,11,0,12,0,13,0,14,0,15,0,16,1,0,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,
i,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,
i,0,0,0,1,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,
i,0,0,0,1,1,0,1,1,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,
i,0,0,0,1,0,5,0,6,0,7,0,8,0,9,0,10,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,
i,0,0,0,1,1,0,1,1,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,
i,0,0,0,1,0,5,0,6,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,10,2,11,2,12,2,13,2,14,2,15,2,16,
i,0,0,0,1,1,1,1,5,1,6,1,7,1,8,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,3,12,3,13,3,14,3,15,3,16,
i,0,0,1,0,1,1,1,5,2,5,2,6,2,7,2,8,2,9,2,10,3,8,3,9,3,10,3,11,3,12,3,13,3,14,4,13,4,14,4,15,4,16,
i,0,0,0,1,1,1,1,5,1,6,1,7,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,9,3,10,3,11,3,12,3,13,3,14,3,15,4,13,4,14,4,15,4,16,
i,0,0,0,1,1,0,1,1,1,5,2,5,2,6,2,7,2,8,3,7,3,8,3,9,3,10,3,11,3,12,4,10,4,11,4,12,4,13,4,14,4,15,5,14,5,15,5,16,
i,0,0,0,1,1,5,1,6,2,5,2,6,2,7,2,8,2,9,3,8,3,9,3,10,3,11,3,12,4,11,4,12,4,13,4,14,4,15,5,14,5,15,5,16,
i,0,0,0,1,1,1,2,5,2,6,2,7,3,6,3,7,3,8,3,9,3,10,4,9,4,10,4,11,4,12,4,13,5,12,5,13,5,14,5,15,6,15,6,16,
j,0,19,0,20,1,20,2,19,2,20,3,18,3,19,3,20,4,15,4,16,4,17,4,18,5,12,5,13,5,14,5,15,5,16,6,9,6,10,6,11,6,12,6,13,7,7,7,8,7,9,7,10,8,5,8,6,8,7,9,1,9,5,10,0,10,1,
j,0,19,0,20,1,20,2,19,2,20,3,18,3,19,3,20,4,15,4,16,4,17,4,18,5,12,5,13,5,14,5,15,5,16,6,8,6,9,6,10,6,11,6,12,6,13,7,5,7,6,7,7,7,8,7,9,8,5,8,6,9,0,9,1,10,0,
j,0,19,0,20,1,20,2,19,2,20,3,18,3,19,3,20,4,14,4,15,4,16,4,17,4,18,5,11,5,12,5,13,5,14,5,15,5,16,6,7,6,8,6,9,6,10,6,11,6,12,7,4,7,5,7,6,7,7,7,8,7,9,8,0,8,5,9,0,9,1,
j,0,21,1,21,2,20,2,21,3,19,3,20,3,21,4,15,4,16,4,17,4,18,4,19,4,20,5,11,5,12,5,13,5,14,5,15,5,16,6,7,6,8,6,9,6,10,6,11,6,12,7,5,7,6,7,7,7,8,8,0,8,1,
j,0,20,0,21,1,20,1,21,2,19,2,20,2,21,3,15,3,16,3,17,3,18,3,19,3,20,4,10,4,11,4,12,4,13,4,14,4,15,4,16,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,6,1,6,5,6,6,6,7,7,0,7,1,
j,0,20,0,21,1,20,1,21,2,19,2,20,2,21,3,14,3,15,3,16,3,17,3,18,3,19,3,20,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,5,5,5,6,5,7,5,8,5,9,5,10,5,11,6,0,6,1,6,5,
j,0,20,0,21,1,20,1,21,2,19,2,20,2,21,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,5,0,5,1,5,5,5,6,5,7,5,8,5,9,6,0,6,1,
j,0,20,0,21,1,20,1,21,2,20,2,21,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,5,0,5,1,5,5,5,6,5,7,
j,0,20,0,21,1,20,1,21,2,20,2,21,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,4,0,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,5,0,
j,0,21,0,22,1,22,2,21,2,22,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,3,21,4,0,4,1,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,4,17,
j,0,21,0,22,1,21,1,22,2,0,2,1,2,2,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,3,0,3,1,3,2,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,
j,0,22,1,22,2,0,2,1,2,21,2,22,3,0,3,1,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,3,21,4,18,4,19,
j,0,21,0,22,1,0,1,1,1,5,1,6,1,7,1,8,1,9,1,10,1,21,1,22,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,3,18,3,19,
j,0,0,0,1,0,21,0,22,1,0,1,1,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,21,1,22,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,3,18,3,19,3,20,
j,0,0,0,1,0,5,0,6,0,21,0,22,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,21,1,22,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,3,18,3,19,3,20,
j,0,0,0,1,1,1,1,5,1,6,1,7,1,8,1,9,1,21,1,22,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,21,2,22,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,3,21,4,18,4,19,4,20,
j,0,0,0,1,1,0,1,1,1,5,2,5,2,6,2,7,2,8,2,9,2,10,2,21,2,22,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,21,3,22,4,13,4,14,4,15,4,16,4,17,4,18,4,19,4,20,4,21,5,18,5,19,5,20,
j,0,0,0,1,1,1,1,5,1,6,1,7,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,21,2,22,3,10,3,11,3,12,3,13,3,14,3,15,3,21,3,22,4,14,4,15,4,16,4,17,4,18,4,19,4,20,4,21,5,18,5,19,5,20,
j,0,0,0,1,1,0,1,1,1,5,2,5,2,6,2,7,2,8,3,7,3,8,3,9,3,10,3,11,3,12,4,10,4,11,4,12,4,13,4,14,4,15,4,21,4,22,5,14,5,15,5,16,5,17,5,18,5,19,5,20,5,21,6,18,6,19,6,20,
j,0,0,0,1,1,5,1,6,2,5,2,6,2,7,2,8,2,9,3,8,3,9,3,10,3,11,3,12,4,11,4,12,4,13,4,14,4,15,4,21,4,22,5,14,5,15,5,16,5,17,5,18,5,19,5,20,5,21,6,17,6,18,6,19,6,20,6,21,
j,0,0,0,1,1,1,2,5,2,6,2,7,3,6,3,7,3,8,3,9,3,10,4,9,4,10,4,11,4,12,4,13,5,12,5,13,5,14,5,15,5,21,5,22,6,15,6,16,6,17,6,18,6,19,6,20,6,21,7,17,7,18,7,19,7,20,7,21,
k,0,15,1,12,1,13,1,14,1,15,1,16,2,9,2,10,2,11,2,12,2,13,3,7,3,8,3,9,3,10,3,11,4,4,4,5,4,6,4,7,4,8,4,10,4,11,5,1,5,2,5,3,5,4,5,5,5,10,6,0,6,1,6,2,6,9,6,10,6,11,6,12,6,13,6,14,7,9,7,13,7,14,7,15,7,16,7,17,7,18,8,8,8,9,8,17,8,18,9,8,10,7,10,8,11,7,
k,0,15,1,12,1,13,1,14,1,15,1,16,2,9,2,10,2,11,2,12,2,13,3,5,3,6,3,7,3,8,3,9,3,10,3,11,4,2,4,3,4,4,4,5,4,6,4,10,5,0,5,1,5,2,5,3,5,9,5,10,6,0,6,9,6,10,6,11,6,12,6,13,6,14,7,8,7,9,7,13,7,14,7,15,7,16,7,17,7,18,8,8,8,16,8,17,8,18,9,7,9,8,10,7,11,7,
k,0,14,0,15,1,11,1,12,1,13,1,14,1,15,2,7,2,8,2,9,2,10,2,11,2,12,3,4,3,5,3,6,3,7,3,8,3,9,3,10,4,1,4,2,4,3,4,4,4,5,4,10,5,0,5,1,5,2,5,9,5,10,6,8,6,9,6,10,6,11,6,12,6,13,6,14,7,8,7,13,7,14,7,15,7,16,7,17,8,7,8,8,8,16,8,17,8,18,9,7,10,6,10,7,
k,0,15,0,16,1,11,1,12,1,13,1,14,1,15,1,16,2,7,2,8,2,9,2,10,2,11,2,12,2,13,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,4,0,4,1,4,2,4,3,4,4,4,5,4,10,4,11,5,1,5,10,5,11,5,12,6,9,6,10,6,11,6,12,6,13,6,14,6,15,7,8,7,9,7,14,7,15,7,16,7,17,8,8,8,16,8,17,8,18,9,7,9,8,10,7,11,7,
k,0,15,0,16,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,10,3,11,4,0,4,1,4,2,4,10,5,9,5,10,5,11,5,12,6,8,6,9,6,11,6,12,6,13,6,14,7,8,7,14,7,15,7,16,7,17,8,7,8,8,8,16,8,17,8,18,9,7,
k,0,14,0,15,0,16,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,0,3,1,3,2,3,3,3,4,3,5,3,10,3,11,4,9,4,10,5,9,5,10,5,11,5,12,6,8,6,9,6,11,6,12,6,13,6,14,7,7,7,8,7,14,7,15,7,16,7,17,8,7,8,16,8,17,9,6,9,7,9,18,10,6,
k,0,14,0,15,0,16,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,0,3,1,3,2,3,10,4,9,4,10,5,8,5,9,5,10,5,11,5,12,6,7,6,8,6,11,6,12,6,13,6,14,7,7,7,14,7,15,7,16,8,6,8,7,8,16,8,17,9,6,
k,0,12,0,13,0,14,0,15,0,16,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,9,2,10,2,11,3,9,3,10,4,9,4,10,5,8,5,9,5,10,5,11,5,12,6,7,6,8,6,12,6,13,6,14,7,6,7,7,7,13,7,14,7,15,7,16,8,5,8,6,8,15,8,16,8,17,9,5,9,17,
k,0,10,0,11,0,12,0,13,0,14,0,15,0,16,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,2,2,9,2,10,3,9,3,10,4,8,4,9,4,10,5,7,5,8,5,10,5,11,5,12,6,6,6,7,6,12,6,13,6,14,7,5,7,6,7,13,7,14,7,15,7,16,8,5,8,15,8,16,
k,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,2,10,2,11,3,9,3,10,4,9,4,10,4,11,5,8,5,11,5,12,5,13,6,7,6,13,6,14,6,15,7,6,7,7,7,14,7,15,7,16,8,6,8,16,8,17,9,17,
k,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,2,10,2,11,3,9,3,10,4,8,4,9,4,10,4,11,5,7,5,8,5,11,5,12,6,6,6,7,6,12,6,13,6,14,7,5,7,6,7,14,7,15,7,16,8,5,8,15,8,16,8,17,9,17,
k,0,0,0,1,0,2,0,3,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,10,2,11,3,10,4,8,4,9,4,10,5,7,5,8,5,9,5,10,5,11,6,6,6,7,6,11,6,12,6,13,7,5,7,6,7,13,7,14,8,5,8,14,8,15,8,16,9,15,9,16,
k,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,10,2,11,3,9,3,10,4,8,4,9,4,10,5,7,5,8,5,10,5,11,5,12,6,6,6,7,6,11,6,12,6,13,7,5,7,13,7,14,8,14,8,15,8,16,9,15,9,16,10,16,
k,0,0,0,1,0,2,0,3,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,3,10,3,11,4,8,4,9,4,10,5,7,5,8,5,9,5,10,6,6,6,7,6,10,6,11,6,12,7,5,7,6,7,11,7,12,7,13,8,4,8,5,8,12,8,13,8,14,9,14,9,15,10,15,
k,0,0,0,1,0,2,0,3,0,4,0,5,0,6,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,10,2,11,2,12,2,13,2,14,2,15,2,16,3,9,3,10,4,8,4,9,4,10,5,7,5,8,5,9,5,10,6,5,6,6,6,10,6,11,6,12,7,4,7,5,7,11,7,12,7,13,8,4,8,12,8,13,8,14,9,14,9,15,10,15,
k,0,0,0,1,0,2,0,3,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,3,10,3,11,3,12,3,13,3,14,3,15,3,16,4,9,4,10,5,7,5,8,5,9,6,6,6,7,6,9,6,10,7,4,7,5,7,6,7,10,7,11,7,12,8,4,8,11,8,12,8,13,9,12,9,13,9,14,10,13,10,14,10,15,11,14,11,15,
k,0,0,1,0,1,1,1,2,1,3,1,4,1,5,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,8,3,9,3,10,3,11,3,12,3,13,3,14,4,9,4,10,4,11,4,13,4,14,4,15,4,16,5,8,5,9,6,6,6,7,6,8,6,9,7,5,7,6,7,9,7,10,8,4,8,5,8,10,8,11,9,3,9,11,9,12,10,12,10,13,11,13,11,14,12,14,
k,0,0,0,1,0,2,0,3,1,1,1,2,1,3,1,4,1,5,1,6,1,7,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,9,3,10,3,11,3,12,3,13,3,14,3,15,4,9,4,10,4,13,4,14,4,15,4,16,5,7,5,8,5,9,6,6,6,7,6,8,6,9,6,10,7,4,7,5,7,6,7,9,7,10,7,11,8,3,8,4,8,10,8,11,9,11,9,12,10,12,10,13,11,13,11,14,12,14,
k,0,0,0,1,1,0,1,1,1,2,1,3,1,4,1,5,2,3,2,4,2,5,2,6,2,7,2,8,3,7,3,8,3,9,3,10,3,11,3,12,4,9,4,10,4,11,4,12,4,13,4,14,4,15,5,8,5,9,5,10,5,14,5,15,5,16,6,6,6,7,6,8,6,9,7,5,7,6,7,9,7,10,8,3,8,4,8,5,8,9,8,10,8,11,9,3,9,10,9,11,10,11,10,12,11,12,11,13,12,13,12,14,13,14,
k,0,0,0,1,0,2,0,3,1,2,1,3,1,4,1,5,1,6,2,5,2,6,2,7,2,8,2,9,3,8,3,9,3,10,3,11,3,12,4,9,4,10,4,11,4,12,4,13,4,14,4,15,5,8,5,9,5,14,5,15,5,16,6,6,6,7,6,8,6,9,7,4,7,5,7,6,7,9,7,10,8,3,8,4,8,10,8,11,9,10,9,11,10,11,10,12,11,12,11,13,12,13,13,13,
k,0,0,0,1,0,2,1,1,1,2,1,3,1,4,2,4,2,5,2,6,2,7,3,6,3,7,3,8,3,9,3,10,4,9,4,10,4,11,4,12,4,13,5,9,5,10,5,11,5,12,5,13,5,14,5,15,6,7,6,8,6,9,6,15,6,16,7,5,7,6,7,7,7,8,7,9,8,3,8,4,8,5,8,9,8,10,9,2,9,10,9,11,10,10,10,11,11,11,11,12,12,12,12,13,13,12,13,13,14,13,
l,0,15,1,12,1,13,1,14,1,15,1,16,2,9,2,10,2,11,2,12,2,13,3,6,3,7,3,8,3,9,3,10,4,4,4,5,4,6,4,7,5,1,5,2,5,3,5,4,5,5,6,0,6,1,6,2,
l,0,14,0,15,1,11,1,12,1,13,1,14,1,15,2,8,2,9,2,10,2,11,2,12,3,5,3,6,3,7,3,8,3,9,4,2,4,3,4,4,4,5,4,6,5,0,5,1,5,2,5,3,6,0,
l,0,14,0,15,1,11,1,12,1,13,1,14,1,15,2,7,2,8,2,9,2,10,2,11,2,12,3,4,3,5,3,6,3,7,3,8,4,0,4,1,4,2,4,3,4,4,4,5,5,0,5,1,5,2,
l,0,15,0,16,1,11,1,12,1,13,1,14,1,15,1,16,2,7,2,8,2,9,2,10,2,11,2,12,3,3,3,4,3,5,3,6,3,7,3,8,4,0,4,1,4,2,4,3,4,4,
l,0,14,0,15,0,16,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,7,4,0,4,1,4,2,
l,0,14,0,15,0,16,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,0,3,1,3,2,3,3,3,4,3,5,
l,0,13,0,14,0,15,0,16,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,3,0,3,1,3,2,
l,0,12,0,13,0,14,0,15,0,16,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,0,2,1,2,2,2,3,2,4,2,5,2,6,
l,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,0,2,1,
l,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,
l,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,
l,0,0,0,1,0,2,0,3,0,4,0,5,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,
l,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,
l,0,0,0,1,0,2,0,3,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,
l,0,0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,3,11,3,12,3,13,3,14,3,15,3,16,
l,0,0,0,1,0,2,0,3,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,3,12,3,13,3,14,3,15,3,16,
l,0,0,0,1,1,0,1,1,1,2,1,3,1,4,1,5,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,4,13,4,14,4,15,4,16,
l,0,0,0,1,0,2,0,3,1,2,1,3,1,4,1,5,1,6,1,7,2,6,2,7,2,8,2,9,2,10,2,11,3,10,3,11,3,12,3,13,3,14,3,15,4,14,4,15,4,16,
l,0,0,0,1,1,0,1,1,1,2,1,3,1,4,1,5,2,4,2,5,2,6,2,7,2,8,3,7,3,8,3,9,3,10,3,11,3,12,4,11,4,12,4,13,4,14,4,15,5,14,5,15,5,16,
l,0,0,0,1,0,2,0,3,1,2,1,3,1,4,1,5,1,6,2,5,2,6,2,7,2,8,2,9,3,8,3,9,3,10,3,11,3,12,4,11,4,12,4,13,4,14,4,15,5,14,5,15,5,16,
l,0,0,0,1,0,2,1,1,1,2,1,3,1,4,1,5,2,4,2,5,2,6,2,7,3,6,3,7,3,8,3,9,3,10,4,9,4,10,4,11,4,12,4,13,5,12,5,13,5,14,5,15,5,16,6,15,6,16,
m,0,10,0,11,1,7,1,8,1,9,1,10,1,11,2,4,2,5,2,6,2,7,2,8,3,2,3,3,3,4,3,5,4,0,4,1,4,2,4,3,5,2,6,2,7,1,7,13,8,1,8,2,8,10,8,11,8,12,8,13,8,14,9,2,9,8,9,9,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,8,11,3,11,4,11,5,11,6,12,5,13,4,14,4,14,16,15,4,15,14,15,15,15,16,16,4,16,5,16,11,16,12,16,13,16,14,17,5,17,6,17,7,17,8,17,9,17,10,17,11,17,12,18,6,18,7,18,8,18,9,
m,0,10,0,11,1,7,1,8,1,9,1,10,1,11,2,3,2,4,2,5,2,6,2,7,2,8,3,0,3,1,3,2,3,3,3,4,3,5,4,0,4,1,4,2,4,3,5,2,6,1,7,1,7,13,8,1,8,10,8,11,8,12,8,13,9,1,9,2,9,7,9,8,9,9,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,8,11,3,11,4,11,5,12,4,13,4,14,3,14,4,15,3,15,4,15,13,15,14,15,15,15,16,16,4,16,10,16,11,16,12,16,13,16,14,17,4,17,5,17,6,17,7,17,8,17,9,17,10,17,11,18,5,18,6,18,7,18,8,
m,0,9,0,10,0,11,1,6,1,7,1,8,1,9,1,10,1,11,2,2,2,3,2,4,2,5,2,6,2,7,3,0,3,1,3,2,3,3,3,4,4,1,4,2,5,1,6,1,7,1,7,13,8,1,8,9,8,10,8,11,8,12,8,13,9,1,9,2,9,6,9,7,9,8,9,9,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,11,4,11,5,13,3,14,3,15,3,15,13,15,14,15,15,16,3,16,4,16,9,16,10,16,11,16,12,16,13,16,14,17,4,17,5,17,6,17,7,17,8,17,9,17,10,17,11,18,5,18,6,18,7,
m,0,9,0,10,0,11,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,3,2,4,2,5,2,6,2,7,3,0,3,1,3,2,3,3,4,1,5,1,6,0,6,1,7,0,7,1,8,1,8,9,8,10,8,11,8,12,8,13,9,1,9,2,9,3,9,5,9,6,9,7,9,8,9,9,9,10,10,2,10,3,10,4,10,5,10,6,11,3,11,4,12,3,13,2,14,2,15,2,15,3,15,13,15,14,16,3,16,9,16,10,16,11,16,12,16,13,16,14,17,3,17,4,17,5,17,6,17,7,17,8,17,9,17,10,18,5,18,6,
m,0,10,0,11,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,3,1,3,2,3,3,4,2,5,1,6,1,7,1,8,1,8,2,8,9,8,10,8,11,8,12,8,13,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,10,3,10,4,10,5,10,6,11,4,12,3,13,3,14,3,15,3,15,13,15,14,15,15,16,3,16,4,16,8,16,9,16,10,16,11,16,12,16,13,16,14,16,15,17,4,17,5,17,6,17,7,17,8,17,9,17,10,
m,0,9,0,10,0,11,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,2,5,2,6,3,2,3,3,4,1,5,1,6,1,7,1,8,1,8,2,8,8,8,9,8,10,8,11,8,12,8,13,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,3,10,4,10,5,11,3,12,3,13,2,14,2,15,2,15,3,15,13,15,14,16,3,16,4,16,7,16,8,16,9,16,10,16,11,16,12,16,13,16,14,17,3,17,4,17,5,17,6,17,7,17,8,17,9,
m,0,8,0,9,0,10,0,11,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,3,2,4,1,5,1,6,0,6,1,7,1,8,1,8,2,8,7,8,8,8,9,8,10,8,11,8,12,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,3,10,4,11,2,12,2,13,2,14,2,15,2,15,12,15,13,16,2,16,3,16,4,16,5,16,6,16,7,16,8,16,9,16,10,16,11,16,12,16,13,16,14,17,3,17,4,17,5,17,6,17,7,17,8,
m,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,3,1,4,1,5,0,6,0,7,0,7,1,8,1,8,2,8,3,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,2,10,3,11,2,12,1,13,1,14,1,15,1,15,2,15,12,15,13,16,2,16,3,16,4,16,5,16,6,16,7,16,8,16,9,16,10,16,11,16,12,16,13,17,3,17,4,17,5,17,6,
m,0,5,0,6,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,3,1,4,0,5,0,6,0,7,0,7,1,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,2,9,3,9,4,9,5,9,6,9,7,10,2,11,1,12,1,13,0,13,1,14,0,14,1,15,1,15,2,15,11,15,12,16,1,16,2,16,3,16,4,16,5,16,6,16,7,16,8,16,9,16,10,16,11,16,12,
m,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,3,0,4,0,5,0,6,0,7,0,7,1,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,9,2,9,3,9,4,10,1,11,0,12,0,13,0,14,0,14,1,15,0,15,1,15,2,15,8,15,9,15,10,15,11,15,12,16,1,16,2,16,3,16,4,16,5,16,6,16,7,16,8,16,9,16,10,16,11,16,12,
m,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,2,3,1,4,1,5,0,6,0,6,1,7,1,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,2,11,1,12,0,12,1,13,0,14,0,14,1,15,1,15,2,16,1,16,2,16,3,16,4,16,5,16,6,16,7,16,8,16,9,16,10,16,11,16,12,
m,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,2,1,3,1,12,2,1,3,0,3,1,4,0,5,0,6,0,6,1,7,1,7,2,7,3,7,4,7,5,7,6,7,7,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,1,9,2,10,1,11,0,12,0,13,0,14,0,14,1,15,1,15,2,15,3,15,4,15,5,15,6,15,7,15,8,15,9,15,10,15,11,16,3,16,4,16,5,16,6,16,7,16,8,16,9,16,10,16,11,
m,0,1,0,2,0,3,0,4,0,5,0,6,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,2,2,3,3,2,4,1,5,1,6,1,7,1,7,2,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,2,11,1,12,0,12,1,13,0,13,1,14,0,14,1,15,1,15,2,16,2,16,3,16,4,16,5,16,6,16,7,16,8,16,9,16,10,16,11,16,12,17,8,17,9,17,10,17,11,17,12,
m,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,2,3,1,4,1,5,1,6,1,7,1,7,2,7,3,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,9,2,9,3,9,7,9,8,9,9,9,10,9,11,9,12,10,1,11,0,12,0,13,0,14,0,14,1,15,0,15,1,15,2,15,3,15,4,16,2,16,3,16,4,16,5,16,6,16,7,16,8,16,9,16,10,16,11,17,9,17,10,17,11,
m,0,2,0,3,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,4,2,5,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,3,2,3,3,4,2,5,1,5,2,6,1,6,2,7,1,7,2,8,2,8,3,8,4,8,5,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,2,10,9,10,10,10,11,10,12,11,1,12,1,13,0,13,1,14,0,14,1,15,1,15,2,16,1,16,2,16,3,16,4,16,5,16,6,16,7,17,4,17,5,17,6,17,7,17,8,17,9,17,10,17,11,18,11,
m,0,2,0,3,0,4,0,5,0,6,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,3,2,9,2,10,2,11,2,12,2,13,3,2,4,1,4,2,5,1,6,1,6,2,7,1,7,2,7,3,8,2,8,3,8,4,8,5,8,6,8,7,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,1,10,10,10,11,10,12,11,0,11,1,12,0,13,0,14,0,14,1,15,0,15,1,15,2,16,1,16,2,16,3,16,4,16,5,16,6,16,7,16,8,17,5,17,6,17,7,17,8,17,9,17,10,17,11,18,11,
m,0,3,1,3,1,4,1,5,1,6,1,7,1,8,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,3,3,3,4,3,11,3,12,3,13,3,14,4,2,4,3,5,2,6,2,7,2,7,3,8,2,8,3,8,4,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,2,10,3,10,7,10,8,10,9,10,10,10,11,10,12,10,13,11,1,11,2,11,11,11,12,11,13,12,1,13,0,13,1,14,0,14,1,15,1,15,2,16,1,16,2,16,3,16,4,17,3,17,4,17,5,17,6,17,7,17,8,17,9,18,7,18,8,18,9,18,10,18,11,
m,0,3,0,4,0,5,1,4,1,5,1,6,1,7,1,8,1,9,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,3,3,3,11,3,12,3,13,3,14,4,2,5,2,6,2,7,2,7,3,8,2,8,3,8,4,8,5,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,1,10,2,10,8,10,9,10,10,10,11,10,12,10,13,11,1,11,12,12,0,13,0,14,0,14,1,15,0,15,1,15,2,16,1,16,2,16,3,16,4,16,5,17,4,17,5,17,6,17,7,17,8,17,9,18,8,18,9,18,10,18,11,
m,0,4,0,5,0,6,0,7,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,4,2,5,2,9,2,10,2,11,2,12,2,13,2,14,3,3,3,4,3,13,3,14,3,15,4,3,5,3,6,3,7,3,7,4,8,4,8,5,8,6,8,7,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,10,1,10,2,10,9,10,10,10,11,10,12,10,13,11,1,11,13,12,1,13,0,13,1,14,1,14,2,15,1,15,2,15,3,15,4,16,3,16,4,16,5,16,6,16,7,17,6,17,7,17,8,17,9,17,10,17,11,18,10,18,11,
m,0,4,0,5,1,5,1,6,1,7,1,8,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,4,3,10,3,11,3,12,3,13,3,14,4,3,4,13,4,14,4,15,5,3,6,2,6,3,7,2,7,3,8,3,8,4,8,5,9,3,9,4,9,5,9,6,9,7,9,8,10,2,10,7,10,8,10,9,10,10,10,11,11,1,11,10,11,11,11,12,11,13,12,0,12,1,13,0,14,0,14,1,15,0,15,1,15,2,16,1,16,2,16,3,16,4,17,4,17,5,17,6,17,7,17,8,18,7,18,8,18,9,18,10,19,10,
m,0,4,0,5,0,6,1,5,1,6,1,7,1,8,1,9,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,3,3,3,4,3,11,3,12,3,13,3,14,4,3,4,14,4,15,5,2,5,3,6,2,6,3,7,2,7,3,7,4,8,3,8,4,8,5,8,6,9,2,9,3,9,4,9,5,9,6,9,7,9,8,10,1,10,8,10,9,10,10,10,11,11,0,11,10,11,11,11,12,12,0,13,0,14,0,14,1,15,0,15,1,15,2,16,2,16,3,16,4,16,5,17,4,17,5,17,6,17,7,17,8,18,7,18,8,18,9,18,10,19,10,
n,0,10,0,11,1,7,1,8,1,9,1,10,1,11,2,4,2,5,2,6,2,7,2,8,3,2,3,3,3,4,3,5,4,0,4,1,4,2,4,3,5,2,6,2,7,1,7,2,8,1,8,2,8,12,8,13,8,14,9,2,9,10,9,11,9,12,9,13,10,2,10,3,10,7,10,8,10,9,10,10,11,3,11,4,11,5,11,6,11,7,11,8,
n,0,10,0,11,1,7,1,8,1,9,1,10,1,11,2,3,2,4,2,5,2,6,2,7,2,8,3,0,3,1,3,2,3,3,3,4,3,5,4,0,4,1,4,2,4,3,5,2,6,1,7,1,8,1,8,12,8,13,9,1,9,2,9,9,9,10,9,11,9,12,9,13,10,2,10,3,10,4,10,6,10,7,10,8,10,9,10,10,11,3,11,4,11,5,11,6,11,7,
n,0,9,0,10,0,11,1,6,1,7,1,8,1,9,1,10,1,11,2,2,2,3,2,4,2,5,2,6,2,7,3,0,3,1,3,2,3,3,3,4,4,1,4,2,5,1,6,1,7,1,8,1,8,12,8,13,9,1,9,2,9,8,9,9,9,10,9,11,9,12,9,13,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,11,3,11,4,11,5,11,6,
n,0,9,0,10,0,11,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,3,2,4,2,5,2,6,2,7,3,0,3,1,3,2,3,3,4,1,5,1,6,0,6,1,7,0,7,1,8,1,8,11,8,12,8,13,9,1,9,2,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,11,3,11,4,11,5,
n,0,10,0,11,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,3,1,3,2,3,3,4,2,5,1,6,1,7,1,8,1,8,2,8,12,8,13,9,2,9,3,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,
n,0,9,0,10,0,11,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,2,5,2,6,3,2,3,3,4,1,5,1,6,1,7,1,8,1,8,2,8,12,8,13,9,1,9,2,9,3,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,2,10,3,10,4,10,5,10,6,10,7,10,8,
n,0,8,0,9,0,10,0,11,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,3,2,4,1,5,1,6,0,6,1,7,1,8,1,8,2,8,11,8,12,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,2,10,3,10,4,10,5,10,6,10,7,
n,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,3,1,4,1,5,0,6,0,7,0,7,1,8,1,8,11,8,12,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,3,10,4,10,5,10,6,
n,0,5,0,6,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,3,1,4,0,5,0,6,0,7,0,7,1,8,0,8,1,8,2,8,10,8,11,8,12,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,
n,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,3,0,4,0,5,0,6,0,7,0,8,0,8,1,8,2,8,7,8,8,8,9,8,10,8,11,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,
n,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,2,3,1,4,1,5,0,6,0,6,1,7,1,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,
n,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,2,1,3,1,12,2,1,3,0,3,1,4,0,5,0,6,0,6,1,7,0,7,1,7,2,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,
n,0,0,0,1,0,2,0,3,0,4,0,5,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,1,2,2,3,1,4,0,5,0,6,0,7,0,7,1,8,0,8,1,8,2,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,10,7,10,8,10,9,10,10,10,11,
n,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,1,3,0,4,0,5,0,6,0,7,0,7,1,8,0,8,1,8,2,8,3,8,4,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,10,9,10,10,10,11,
n,0,1,0,2,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,3,2,4,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,3,1,3,2,4,1,5,0,5,1,6,0,6,1,7,0,7,1,8,1,8,2,9,1,9,2,9,3,9,4,9,5,9,6,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,11,11,
n,0,1,0,2,0,3,0,4,0,5,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,8,2,9,2,10,2,11,2,12,3,1,4,0,4,1,5,0,6,0,6,1,7,0,7,1,8,1,8,2,9,2,9,3,9,4,9,5,9,6,9,7,9,8,10,5,10,6,10,7,10,8,10,9,10,10,10,11,11,11,
n,0,1,1,1,1,2,1,3,1,4,1,5,1,6,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,1,3,2,3,9,3,10,3,11,3,12,4,1,5,0,6,0,7,0,8,0,8,1,9,1,9,2,9,3,10,2,10,3,10,4,10,5,10,6,10,7,10,8,11,6,11,7,11,8,11,9,11,10,11,11,
n,0,1,0,2,0,3,1,2,1,3,1,4,1,5,1,6,1,7,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,1,3,9,3,10,3,11,3,12,4,0,5,0,6,0,7,0,8,0,8,1,9,1,9,2,9,3,9,4,10,3,10,4,10,5,10,6,10,7,10,8,10,9,11,7,11,8,11,9,11,10,
n,0,2,0,3,0,4,0,5,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,2,2,3,2,7,2,8,2,9,2,10,2,11,2,12,3,1,3,2,3,11,3,12,3,13,4,1,5,1,6,0,6,1,7,1,8,1,8,2,8,3,9,2,9,3,9,4,9,5,9,6,10,5,10,6,10,7,10,8,10,9,10,10,11,9,11,10,11,11,
n,0,2,0,3,1,3,1,4,1,5,1,6,2,3,2,4,2,5,2,6,2,7,2,8,2,9,3,2,3,8,3,9,3,10,3,11,3,12,4,1,4,11,4,12,4,13,5,1,6,0,6,1,7,0,7,1,8,1,8,2,9,1,9,2,9,3,9,4,10,3,10,4,10,5,10,6,10,7,11,6,11,7,11,8,11,9,11,10,12,9,12,10,12,11,
n,0,2,0,3,0,4,1,3,1,4,1,5,1,6,1,7,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,1,3,2,3,9,3,10,3,11,3,12,4,1,4,12,4,13,5,0,5,1,6,0,6,1,7,0,7,1,8,1,8,2,9,2,9,3,9,4,9,5,10,4,10,5,10,6,10,7,11,6,11,7,11,8,11,9,11,10,12,9,12,10,
o,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,9,1,10,1,11,2,1,2,2,2,3,2,11,3,1,3,11,3,12,4,0,4,1,4,12,5,0,5,12,6,0,6,11,6,12,7,0,7,1,7,11,7,12,8,1,8,10,8,11,9,1,9,2,9,8,9,9,9,10,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,11,5,11,6,
o,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,9,1,10,2,1,2,2,2,10,2,11,3,0,3,1,3,11,4,0,4,11,4,12,5,0,5,11,5,12,6,0,6,11,6,12,7,0,7,11,8,1,8,9,8,10,8,11,9,1,9,2,9,7,9,8,9,9,9,10,10,2,10,3,10,4,10,5,10,6,10,7,10,8,
o,0,7,0,8,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,3,2,4,2,10,2,11,3,1,3,2,3,11,3,12,4,1,4,12,5,1,5,12,6,0,6,1,6,12,7,1,7,12,8,1,8,11,8,12,9,1,9,2,9,10,9,11,10,2,10,3,10,4,10,7,10,8,10,9,10,10,11,3,11,4,11,5,11,6,11,7,11,8,11,9,
o,0,6,0,7,0,8,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,3,2,4,2,10,2,11,3,1,3,2,3,11,4,0,4,1,4,12,5,0,5,1,5,12,6,0,6,12,7,0,7,1,7,11,7,12,8,1,8,11,8,12,9,1,9,2,9,9,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,3,11,4,11,5,11,6,11,7,11,8,
o,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,3,2,10,2,11,3,0,3,1,3,11,4,0,4,1,4,11,4,12,5,0,5,12,6,0,6,12,7,0,7,11,7,12,8,0,8,1,8,10,8,11,9,1,9,2,9,9,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,3,11,4,11,5,11,6,11,7,
o,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,0,3,1,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,11,8,0,8,1,8,10,8,11,9,1,9,2,9,8,9,9,9,10,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,11,4,11,5,11,6,
o,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,3,2,11,3,1,3,11,3,12,4,0,4,1,4,12,5,0,5,1,5,12,6,0,6,1,6,12,7,1,7,11,7,12,8,1,8,2,8,11,8,12,9,2,9,3,9,9,9,10,9,11,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,
o,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,9,1,10,1,11,2,1,2,2,2,11,3,0,3,1,3,11,3,12,4,0,4,12,5,0,5,12,6,0,6,12,7,0,7,1,7,11,7,12,8,1,8,2,8,10,8,11,9,2,9,3,9,8,9,9,9,10,10,3,10,4,10,5,10,6,10,7,10,8,10,9,
o,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,9,1,10,2,0,2,1,2,10,2,11,3,0,3,1,3,11,4,0,4,11,4,12,5,0,5,12,6,0,6,11,6,12,7,0,7,1,7,11,8,1,8,2,8,10,8,11,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,3,10,4,10,5,10,6,10,7,10,8,
o,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,9,2,10,3,0,3,1,3,10,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,11,8,0,8,1,8,10,8,11,9,1,9,2,9,9,9,10,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,3,11,4,11,5,11,6,11,7,11,8,
o,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,3,2,9,2,10,2,11,3,1,3,11,4,1,4,11,5,0,5,12,6,0,6,12,7,1,7,11,8,1,8,11,9,1,9,2,9,3,9,9,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,5,11,6,11,7,
o,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,0,3,1,3,11,3,12,4,0,4,12,5,0,5,12,6,0,6,12,7,0,7,1,7,11,7,12,8,1,8,2,8,11,9,1,9,2,9,3,9,9,9,10,9,11,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,
o,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,8,1,9,1,10,2,1,2,10,2,11,3,0,3,1,3,11,4,0,4,11,4,12,5,0,5,12,6,0,6,11,6,12,7,0,7,1,7,11,8,1,8,2,8,10,8,11,9,1,9,2,9,3,9,4,9,8,9,9,9,10,10,3,10,4,10,5,10,6,10,7,10,8,10,9,
o,0,5,0,6,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,8,2,9,2,10,3,0,3,1,3,10,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,11,8,0,8,1,8,11,9,1,9,2,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,3,11,4,11,5,11,6,11,7,11,8,
o,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,1,3,11,3,12,4,1,4,12,5,0,5,1,5,12,6,0,6,1,6,12,7,1,7,12,8,1,8,2,8,11,8,12,9,2,9,3,9,10,9,11,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,5,11,6,11,7,11,8,11,9,
o,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,1,3,11,3,12,4,0,4,1,4,12,5,0,5,12,6,0,6,1,6,12,7,1,7,12,8,1,8,2,8,11,9,2,9,3,9,4,9,10,9,11,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,7,
o,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,8,1,9,1,10,2,1,2,10,2,11,3,0,3,1,3,11,3,12,4,0,4,12,5,0,5,12,6,0,6,12,7,0,7,1,7,11,7,12,8,1,8,2,8,11,9,2,9,3,9,4,9,5,9,9,9,10,10,3,10,4,10,5,10,6,10,7,10,8,10,9,
o,0,4,0,5,0,6,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,8,2,9,2,10,3,0,3,1,3,10,3,11,4,0,4,11,5,0,5,11,5,12,6,0,6,12,7,0,7,11,7,12,8,0,8,1,8,11,9,1,9,2,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,4,11,5,11,6,11,7,11,8,11,9,
o,0,3,0,4,0,5,0,6,0,7,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,9,2,10,3,0,3,10,3,11,4,0,4,11,5,0,5,11,5,12,6,0,6,11,6,12,7,0,7,11,8,0,8,1,8,11,9,1,9,2,9,3,9,10,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,5,11,6,11,7,11,8,
o,0,2,0,3,0,4,0,5,0,6,0,7,0,8,1,1,1,2,1,3,1,6,1,7,1,8,1,9,2,0,2,1,2,9,2,10,3,0,3,10,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,1,7,11,8,0,8,1,8,2,8,10,8,11,9,1,9,2,9,3,9,4,9,9,9,10,10,3,10,4,10,5,10,6,10,7,10,8,10,9,11,6,11,7,
o,0,5,0,6,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,2,2,3,2,8,2,9,2,10,2,11,3,1,3,10,3,11,4,1,4,11,4,12,5,0,5,1,5,12,6,0,6,1,6,12,7,0,7,1,7,12,8,1,8,2,8,12,9,1,9,2,9,3,9,11,10,2,10,3,10,4,10,5,10,9,10,10,10,11,11,4,11,5,11,6,11,7,11,8,11,9,11,10,
p,0,15,1,13,1,14,1,15,1,16,2,10,2,11,2,12,2,13,3,7,3,8,3,9,3,10,3,11,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,5,2,5,3,5,4,5,5,5,11,5,12,6,0,6,1,6,2,6,3,6,12,6,13,7,2,7,13,8,2,8,13,9,1,9,12,9,13,10,1,10,2,10,12,10,13,11,2,11,11,11,12,12,2,12,3,12,9,12,10,12,11,13,3,13,4,13,5,13,6,13,7,13,8,13,9,14,6,
p,0,13,0,14,0,15,0,16,1,10,1,11,1,12,1,13,1,14,2,7,2,8,2,9,2,10,2,11,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,4,0,4,1,4,2,4,3,4,4,4,11,4,12,5,0,5,1,5,2,5,3,5,12,6,2,6,12,6,13,7,1,7,12,7,13,8,1,8,12,8,13,9,1,9,11,9,12,10,1,10,2,10,10,10,11,10,12,11,2,11,3,11,8,11,9,11,10,11,11,12,3,12,4,12,5,12,6,12,7,12,8,12,9,
p,0,13,0,14,0,15,0,16,1,9,1,10,1,11,1,12,1,13,1,14,2,6,2,7,2,8,2,9,2,10,2,11,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,4,0,4,1,4,2,4,3,4,11,4,12,5,1,5,2,5,12,6,1,6,12,7,1,7,12,8,1,8,12,9,1,9,11,9,12,10,1,10,2,10,10,10,11,11,2,11,3,11,7,11,8,11,9,11,10,12,3,12,4,12,5,12,6,12,7,12,8,
p,0,13,0,14,0,15,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,1,3,2,3,3,3,4,3,5,3,6,3,9,3,10,4,0,4,1,4,2,4,3,4,11,5,1,5,2,5,12,6,1,6,12,7,0,7,12,8,0,8,12,9,1,9,11,9,12,10,1,10,2,10,9,10,10,10,11,11,2,11,3,11,4,11,5,11,6,11,7,11,8,11,9,11,10,12,3,12,4,12,5,12,6,12,7,12,8,
p,0,14,0,15,0,16,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,10,3,11,4,1,4,2,4,3,4,12,5,2,5,12,5,13,6,1,6,13,7,1,7,13,8,1,8,12,8,13,9,1,9,2,9,11,9,12,10,2,10,3,10,10,10,11,10,12,11,3,11,4,11,5,11,6,11,7,11,8,11,9,11,10,12,4,12,5,12,6,12,7,12,8,
p,0,15,0,16,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,0,3,1,3,2,3,3,3,4,3,5,3,10,3,11,4,2,4,3,4,11,4,12,5,1,5,2,5,12,6,1,6,12,6,13,7,1,7,12,8,1,8,12,9,1,9,11,9,12,10,2,10,3,10,9,10,10,10,11,11,3,11,4,11,5,11,6,11,7,11,8,11,9,11,10,12,5,12,6,12,7,
p,0,16,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,0,3,1,3,2,3,3,3,4,3,10,3,11,4,1,4,2,4,11,4,12,5,1,5,12,6,1,6,12,7,0,7,1,7,12,8,1,8,11,8,12,9,1,9,11,9,12,10,1,10,2,10,3,10,8,10,9,10,10,10,11,11,3,11,4,11,5,11,6,11,7,11,8,11,9,
p,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,10,2,11,3,1,3,11,4,0,4,1,4,12,5,0,5,12,6,0,6,12,7,0,7,1,7,11,7,12,8,1,8,10,8,11,9,1,9,2,9,3,9,7,9,8,9,9,9,10,10,3,10,4,10,5,10,6,10,7,10,8,10,9,
p,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,10,3,1,3,11,4,0,4,11,4,12,5,0,5,12,6,0,6,11,6,12,7,0,7,11,8,1,8,10,8,11,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,3,10,4,10,5,10,6,10,7,10,8,
p,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,10,3,0,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,10,7,11,8,0,8,1,8,2,8,9,8,10,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,4,10,5,10,6,10,7,
p,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,2,2,2,3,2,10,3,1,3,11,4,1,4,11,5,0,5,12,6,0,6,1,6,11,6,12,7,1,7,11,8,1,8,2,8,10,8,11,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,4,10,5,10,6,10,7,10,8,
p,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,1,2,1,3,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,2,1,2,11,3,0,3,1,3,11,3,12,4,0,4,12,5,0,5,12,6,0,6,1,6,11,6,12,7,1,7,11,8,1,8,2,8,3,8,9,8,10,8,11,9,3,9,4,9,5,9,6,9,7,9,8,9,9,
p,0,0,0,1,0,2,0,3,0,4,0,5,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,2,1,2,2,2,9,2,10,2,11,2,13,2,14,2,15,2,16,2,17,3,0,3,1,3,11,4,0,4,11,5,0,5,12,6,0,6,11,6,12,7,0,7,1,7,11,8,1,8,2,8,10,8,11,9,1,9,2,9,3,9,4,9,5,9,7,9,8,9,9,9,10,10,3,10,4,10,5,10,6,10,7,10,8,10,9,
p,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,2,1,2,9,2,10,2,11,2,13,2,14,2,15,2,16,2,17,3,0,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,1,7,11,8,1,8,2,8,10,8,11,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,4,10,5,10,6,10,7,10,8,
p,0,1,0,2,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,2,2,3,2,4,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,3,1,3,2,3,10,3,11,3,12,3,14,3,15,3,16,3,17,4,1,4,11,4,12,5,0,5,1,5,12,6,0,6,1,6,12,7,1,7,12,8,1,8,2,8,11,8,12,9,2,9,3,9,10,9,11,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,6,11,7,11,8,
p,0,1,0,2,0,3,0,4,0,5,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,3,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,3,1,3,11,3,14,3,15,3,16,3,17,4,0,4,1,4,11,5,0,5,12,6,0,6,12,7,0,7,1,7,12,8,1,8,2,8,11,8,12,9,2,9,3,9,4,9,10,9,11,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,
p,0,1,1,1,1,2,1,3,1,4,1,5,1,6,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,1,3,2,3,9,3,10,3,11,3,12,3,13,3,14,3,15,4,0,4,1,4,11,4,14,4,15,4,16,4,17,5,0,5,11,6,0,6,12,7,0,7,12,8,0,8,1,8,11,8,12,9,1,9,2,9,11,10,2,10,3,10,4,10,5,10,9,10,10,11,4,11,5,11,6,11,7,11,8,11,9,
p,0,1,0,2,0,3,1,2,1,3,1,4,1,5,1,6,1,7,2,2,2,3,2,6,2,7,2,8,2,9,2,10,2,11,3,1,3,9,3,10,3,11,3,12,3,13,3,14,3,15,4,0,4,11,4,13,4,14,4,15,4,16,4,17,5,0,5,11,5,17,6,0,6,11,6,12,7,0,7,11,7,12,8,0,8,1,8,11,9,1,9,2,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,4,11,5,11,6,11,7,11,8,
p,0,1,0,2,0,3,0,4,1,2,1,3,1,4,1,5,1,6,1,7,1,8,2,1,2,2,2,7,2,8,2,9,2,10,2,11,3,0,3,1,3,9,3,10,3,11,3,12,3,13,3,14,3,15,4,0,4,10,4,11,4,13,4,14,4,15,4,16,4,17,5,0,5,11,5,17,6,0,6,11,7,0,7,11,8,0,8,1,8,11,9,1,9,2,9,3,9,10,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,5,11,6,11,7,11,8,
p,0,2,0,3,1,3,1,4,1,5,1,6,2,3,2,4,2,5,2,6,2,7,2,8,2,9,3,2,3,9,3,10,3,11,3,12,4,1,4,11,4,12,4,13,4,14,4,15,5,1,5,11,5,12,5,14,5,15,5,16,5,17,5,18,6,0,6,1,6,12,6,17,6,18,7,0,7,1,7,12,8,1,8,12,9,1,9,2,9,3,9,11,9,12,10,2,10,3,10,4,10,5,10,10,10,11,11,4,11,5,11,6,11,7,11,8,11,9,11,10,
p,0,2,0,3,0,4,1,3,1,4,1,5,1,6,1,7,2,2,2,3,2,4,2,6,2,7,2,8,2,9,2,10,3,1,3,2,3,9,3,10,3,11,3,12,4,1,4,11,4,12,4,13,4,14,4,15,5,0,5,11,5,12,5,14,5,15,5,16,5,17,5,18,6,0,6,1,6,12,6,17,6,18,7,0,7,1,7,12,8,1,8,2,8,12,9,1,9,2,9,3,9,11,10,3,10,4,10,5,10,6,10,9,10,10,10,11,11,4,11,5,11,6,11,7,11,8,11,9,11,10,
q,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,9,1,10,1,11,2,1,2,2,2,3,2,11,3,0,3,1,3,11,3,12,4,0,4,1,4,12,5,0,5,12,5,17,6,0,6,11,6,14,6,15,6,16,6,17,7,0,7,1,7,10,7,11,7,12,7,13,7,14,7,15,8,1,8,9,8,10,8,11,8,12,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,3,10,4,10,5,10,6,11,2,11,3,11,4,
q,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,9,1,10,2,1,2,2,2,10,2,11,3,0,3,1,3,11,4,0,4,11,5,0,5,11,5,17,6,0,6,11,6,14,6,15,6,16,6,17,7,0,7,10,7,11,7,12,7,13,7,14,7,15,8,1,8,8,8,9,8,10,8,11,8,12,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,2,10,3,10,4,10,5,10,6,11,2,11,3,
q,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,2,1,3,1,4,1,5,1,10,1,11,2,1,2,2,2,11,2,12,3,1,3,12,4,0,4,1,4,12,5,0,5,1,5,12,6,1,6,11,6,12,6,15,6,16,6,17,6,18,7,1,7,11,7,12,7,13,7,14,7,15,7,16,8,2,8,9,8,10,8,11,8,12,8,13,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,2,10,3,10,4,10,5,10,6,11,2,
q,0,6,0,7,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,3,2,4,2,10,2,11,3,1,3,2,3,11,3,12,4,0,4,1,4,12,5,0,5,12,6,0,6,12,7,0,7,11,7,15,7,16,7,17,8,1,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,2,9,8,9,9,9,10,9,11,9,12,9,13,10,3,10,4,10,5,10,6,10,7,10,8,10,9,11,2,11,3,11,4,11,5,
q,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,3,2,10,2,11,3,0,3,1,3,11,4,0,4,11,4,12,5,0,5,12,6,0,6,11,7,0,7,11,7,16,7,17,8,1,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,2,9,3,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,2,10,3,10,4,10,5,10,6,10,7,10,8,11,1,11,2,11,3,
q,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,0,3,1,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,10,7,11,7,16,7,17,8,1,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,1,10,2,10,3,10,4,10,5,10,6,10,7,11,1,
q,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,11,3,1,3,12,4,0,4,1,4,12,5,0,5,12,6,0,6,1,6,12,7,1,7,11,8,2,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,1,10,2,10,3,10,4,10,5,10,6,10,7,
q,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,2,1,3,1,4,1,5,1,8,1,9,1,10,2,1,2,2,2,11,3,0,3,1,3,11,3,12,4,0,4,12,5,0,5,12,6,0,6,11,6,12,7,1,7,11,8,2,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,10,1,10,2,10,3,10,4,10,5,
q,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,9,1,10,2,0,2,1,2,10,2,11,3,0,3,11,4,0,4,11,4,12,5,0,5,11,5,12,6,0,6,11,7,1,7,10,7,11,8,2,8,3,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,1,
q,0,5,0,6,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,9,2,10,3,0,3,1,3,10,3,11,4,0,4,11,5,0,5,11,6,0,6,11,7,0,7,11,8,1,8,10,9,1,9,2,9,3,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,0,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,
q,0,5,0,6,0,7,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,3,2,9,2,10,2,11,3,1,3,11,4,0,4,1,4,11,4,12,5,0,5,12,6,0,6,1,6,11,6,12,7,1,7,11,8,2,8,10,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,9,17,10,0,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,10,17,
q,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,0,3,1,3,11,3,12,4,0,4,12,5,0,5,12,6,0,6,12,7,1,7,11,8,2,8,10,8,11,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,
q,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,8,1,9,1,10,2,0,2,1,2,10,2,11,3,0,3,11,4,0,4,11,4,12,5,0,5,12,6,0,6,11,6,12,7,1,7,11,8,1,8,2,8,3,8,10,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,
q,0,5,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,1,2,2,2,8,2,9,2,10,3,0,3,1,3,10,3,11,4,0,4,11,5,0,5,11,5,12,6,0,6,11,7,0,7,11,8,1,8,10,8,11,9,0,9,1,9,2,9,3,9,4,9,9,9,10,10,0,10,1,10,2,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,10,11,11,11,12,11,13,11,14,11,15,11,16,
q,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,1,3,11,3,12,4,1,4,12,5,1,5,12,6,1,6,12,7,1,7,12,8,2,8,3,8,11,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,9,9,10,9,11,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,11,11,12,11,13,11,14,11,15,11,16,
q,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,1,3,11,3,12,4,0,4,12,5,0,5,12,6,1,6,12,7,1,7,2,7,11,7,12,8,0,8,1,8,2,8,3,8,11,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,6,10,7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,11,11,11,12,11,13,11,14,11,15,11,16,
q,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,1,1,2,1,3,1,7,1,8,1,9,1,10,2,1,2,10,2,11,3,0,3,11,3,12,4,0,4,12,5,0,5,12,6,1,6,12,7,1,7,2,7,11,8,0,8,1,8,2,8,3,8,10,8,11,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,7,10,8,10,9,10,10,10,11,10,12,10,13,11,11,11,12,11,13,11,14,11,15,11,16,
q,0,5,0,6,0,7,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,3,2,9,2,10,2,11,3,1,3,2,3,11,3,12,4,1,4,12,5,1,5,12,5,13,6,1,6,13,7,2,7,12,7,13,8,0,8,1,8,2,8,3,8,12,9,0,9,1,9,2,9,3,9,4,9,5,9,11,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,11,8,11,9,11,10,11,11,11,12,11,13,11,14,12,12,12,13,12,14,12,15,12,16,13,16,
q,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,10,2,11,3,1,3,11,3,12,4,1,4,12,5,1,5,12,5,13,6,1,6,12,6,13,7,2,7,12,8,0,8,1,8,2,8,3,8,11,8,12,9,2,9,3,9,4,9,5,9,6,9,10,9,11,10,5,10,6,10,7,10,8,10,9,10,10,11,9,11,10,11,11,11,12,11,13,11,14,12,12,12,13,12,14,12,15,12,16,
q,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,7,1,8,1,9,1,10,2,1,2,2,2,10,2,11,3,1,3,11,3,12,4,1,4,12,5,1,5,12,6,1,6,12,7,0,7,1,7,2,7,12,8,0,8,1,8,2,8,3,8,4,8,11,8,12,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,6,10,7,10,8,10,9,10,10,11,9,11,10,11,11,11,12,11,13,12,12,12,13,12,14,12,15,13,15,
q,0,6,0,7,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,3,2,9,2,10,2,11,3,2,3,11,3,12,4,2,4,12,4,13,5,2,5,13,6,2,6,13,7,2,7,13,8,0,8,1,8,2,8,3,8,13,9,2,9,3,9,4,9,5,9,12,10,5,10,6,10,7,10,8,10,9,10,10,10,11,11,8,11,9,11,10,11,11,12,10,12,11,12,12,12,13,12,14,13,13,13,14,13,15,13,16,14,16,
r,0,10,0,11,1,7,1,8,1,9,1,10,1,11,2,4,2,5,2,6,2,7,2,8,3,2,3,3,3,4,3,5,4,0,4,1,4,2,4,3,5,2,6,1,6,2,7,1,7,2,8,1,8,2,9,2,
r,0,10,0,11,1,7,1,8,1,9,1,10,1,11,2,3,2,4,2,5,2,6,2,7,2,8,3,0,3,1,3,2,3,3,3,4,3,5,4,0,4,1,4,2,4,3,5,2,6,1,7,1,7,2,8,1,8,2,
r,0,9,0,10,0,11,1,6,1,7,1,8,1,9,1,10,1,11,2,2,2,3,2,4,2,5,2,6,2,7,3,0,3,1,3,2,3,3,3,4,4,1,4,2,5,1,6,1,7,1,8,1,8,2,
r,0,9,0,10,0,11,1,5,1,6,1,7,1,8,1,9,1,10,2,1,2,2,2,3,2,4,2,5,2,6,3,0,3,1,3,2,3,3,4,1,5,1,6,0,6,1,7,0,7,1,8,1,
r,0,10,0,11,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,3,1,3,2,3,3,4,2,5,1,5,2,6,1,6,2,7,1,7,2,
r,0,9,0,10,0,11,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,2,5,2,6,3,2,3,3,4,1,4,2,5,1,6,1,7,1,7,2,
r,0,8,0,9,0,10,0,11,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,3,2,4,1,5,0,5,1,6,0,6,1,7,1,
r,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,3,3,1,4,0,4,1,5,0,5,1,6,0,6,1,
r,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,3,1,4,0,5,0,5,1,6,0,6,1,
r,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,3,0,4,0,5,0,6,0,
r,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,2,3,1,4,0,5,0,5,1,
r,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,2,1,3,2,1,3,0,3,1,4,0,4,1,5,0,5,1,
r,0,0,0,1,0,2,0,3,0,4,0,5,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,1,2,2,3,0,3,1,4,0,4,1,5,0,5,1,
r,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,1,3,0,3,1,4,0,5,0,
r,0,0,0,1,0,2,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,2,2,3,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,3,0,3,1,4,0,5,0,
r,0,1,0,2,0,3,0,4,0,5,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,2,2,8,2,9,2,10,2,11,2,12,3,1,4,0,4,1,5,0,5,1,
r,0,1,1,1,1,2,1,3,1,4,1,5,1,6,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,1,3,2,3,9,3,10,3,11,3,12,4,0,4,1,5,0,5,1,
r,0,1,0,2,0,3,1,2,1,3,1,4,1,5,1,6,1,7,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,0,3,1,3,10,3,11,3,12,4,0,4,1,5,0,5,1,
r,0,1,0,2,0,3,0,4,1,2,1,3,1,4,1,5,1,6,1,7,1,8,2,1,2,2,2,6,2,7,2,8,2,9,2,10,2,11,3,0,3,1,3,10,3,11,3,12,4,0,4,1,5,0,
r,0,1,0,2,1,2,1,3,1,4,1,5,2,2,2,3,2,4,2,5,2,6,2,7,2,8,3,0,3,1,3,7,3,8,3,9,3,10,3,11,4,0,4,1,4,10,4,11,4,12,5,0,
r,0,1,0,2,0,3,1,2,1,3,1,4,1,5,1,6,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,3,0,3,1,3,8,3,9,3,10,3,11,4,0,4,11,4,12,5,0,
s,0,7,0,8,0,9,1,7,1,8,1,9,1,10,2,2,2,3,2,10,2,11,3,0,3,1,3,2,3,3,3,4,3,11,4,0,4,4,4,5,4,11,4,12,5,0,5,5,5,6,5,12,6,0,6,5,6,6,6,12,7,0,7,6,7,7,7,11,7,12,8,0,8,1,8,7,8,8,8,9,8,10,8,11,9,1,9,2,9,8,9,9,9,10,10,2,10,3,
s,0,8,0,9,0,10,1,8,1,9,1,10,1,11,2,2,2,3,2,4,2,11,2,12,3,1,3,2,3,3,3,4,3,5,3,12,4,1,4,5,4,6,4,12,5,0,5,1,5,6,5,12,6,1,6,6,6,7,6,12,7,1,7,7,7,8,7,12,8,1,8,2,8,8,8,9,8,10,8,11,8,12,9,2,9,3,9,9,9,10,9,11,10,3,10,4,
s,0,8,0,9,0,10,1,8,1,9,1,10,1,11,2,1,2,2,2,3,2,4,2,11,3,1,3,2,3,3,3,4,3,5,3,12,4,0,4,1,4,5,4,6,4,12,5,0,5,5,5,6,5,12,6,0,6,6,6,7,6,12,7,1,7,7,7,8,7,11,7,12,8,1,8,7,8,8,8,9,8,10,8,11,9,2,9,3,9,8,9,9,9,10,10,3,10,4,
s,0,8,0,9,0,10,1,9,1,10,1,11,2,1,2,2,2,3,2,4,2,11,3,0,3,1,3,4,3,5,3,11,3,12,4,0,4,5,4,6,4,12,5,0,5,5,5,6,5,12,6,0,6,6,6,7,6,12,7,0,7,1,7,6,7,7,7,11,7,12,8,1,8,7,8,8,8,9,8,10,8,11,9,1,9,2,9,3,9,8,9,9,9,10,10,3,
s,0,8,0,9,1,2,1,3,1,9,1,10,2,0,2,1,2,2,2,3,2,4,2,11,3,0,3,4,3,5,3,11,4,0,4,5,4,11,4,12,5,0,5,5,5,6,5,12,6,0,6,6,6,11,6,12,7,0,7,6,7,7,7,11,8,1,8,7,8,8,8,9,8,10,8,11,9,1,9,2,9,3,9,8,9,9,
s,0,9,0,10,1,2,1,3,1,4,1,10,1,11,2,1,2,2,2,3,2,4,2,5,2,11,2,12,3,1,3,5,3,6,3,12,4,0,4,1,4,5,4,6,4,12,5,1,5,6,5,7,5,12,6,1,6,6,6,7,6,12,7,1,7,7,7,8,7,11,7,12,8,1,8,2,8,3,8,8,8,9,8,10,8,11,9,2,9,3,9,9,9,10,
s,0,9,0,10,1,1,1,2,1,3,1,4,1,10,1,11,2,1,2,4,2,5,2,11,2,12,3,0,3,1,3,5,3,6,3,12,4,0,4,5,4,6,4,12,5,0,5,6,5,7,5,12,6,0,6,1,6,6,6,7,6,12,7,1,7,7,7,8,7,11,7,12,8,1,8,2,8,3,8,7,8,8,8,9,8,10,8,11,9,2,9,3,9,9,
s,0,3,0,9,0,10,1,1,1,2,1,3,1,4,1,5,1,10,1,11,2,0,2,1,2,4,2,5,2,11,2,12,3,0,3,5,3,6,3,12,4,0,4,5,4,6,4,12,5,0,5,6,5,12,6,0,6,1,6,6,6,7,6,11,6,12,7,1,7,6,7,7,7,11,8,1,8,2,8,3,8,7,8,8,8,9,8,10,8,11,9,9,
s,0,2,0,3,0,4,0,9,0,10,1,0,1,1,1,2,1,3,1,4,1,5,1,10,1,11,2,0,2,4,2,5,2,11,3,0,3,5,3,11,3,12,4,0,4,5,4,6,4,11,4,12,5,0,5,5,5,6,5,11,5,12,6,0,6,6,6,7,6,11,7,0,7,1,7,6,7,7,7,10,7,11,8,1,8,2,8,7,8,8,8,9,8,10,
s,0,9,1,1,1,2,1,3,1,4,1,9,1,10,2,0,2,1,2,3,2,4,2,5,2,10,2,11,3,0,3,4,3,5,3,11,4,0,4,5,4,11,5,0,5,5,5,6,5,11,6,0,6,5,6,6,6,11,7,0,7,6,7,11,8,0,8,1,8,2,8,6,8,7,8,10,8,11,9,1,9,2,9,7,9,8,9,9,9,10,
s,0,3,0,9,0,10,1,1,1,2,1,3,1,4,1,5,1,9,1,10,1,11,2,1,2,4,2,5,2,11,3,0,3,1,3,5,3,6,3,11,3,12,4,0,4,5,4,6,4,12,5,0,5,6,5,12,6,1,6,6,6,11,6,12,7,1,7,2,7,6,7,7,7,11,8,1,8,2,8,7,8,8,8,9,8,10,8,11,9,8,9,9,9,10,
s,0,2,0,3,0,4,0,10,1,1,1,2,1,3,1,4,1,5,1,9,1,10,1,11,2,0,2,1,2,5,2,6,2,11,2,12,3,0,3,5,3,6,3,12,4,0,4,5,4,6,4,12,5,0,5,6,5,12,6,0,6,1,6,6,6,7,6,12,7,1,7,2,7,6,7,7,7,11,7,12,8,1,8,2,8,7,8,8,8,9,8,10,8,11,9,7,9,8,9,9,9,10,
s,0,1,0,2,0,3,0,4,0,9,0,10,1,1,1,4,1,5,1,9,1,10,1,11,2,0,2,1,2,5,2,11,3,0,3,5,3,6,3,11,3,12,4,0,4,5,4,6,4,12,5,0,5,5,5,6,5,12,6,0,6,1,6,6,6,11,6,12,7,1,7,2,7,6,7,7,7,11,8,2,8,6,8,7,8,8,8,9,8,10,8,11,9,7,9,8,9,9,9,10,
s,0,1,0,2,0,3,0,4,0,5,0,9,0,10,1,0,1,1,1,4,1,5,1,10,1,11,2,0,2,5,2,11,3,0,3,5,3,6,3,11,3,12,4,0,4,5,4,6,4,11,4,12,5,0,5,5,5,6,5,11,5,12,6,0,6,1,6,5,6,6,6,11,7,1,7,2,7,6,7,7,7,10,7,11,8,6,8,7,8,8,8,9,8,10,9,7,9,8,9,9,
s,0,2,0,3,0,4,1,1,1,2,1,3,1,4,1,5,1,9,1,10,2,0,2,4,2,5,2,10,2,11,3,0,3,5,3,11,4,0,4,5,4,11,5,0,5,5,5,6,5,11,6,0,6,5,6,6,6,11,7,0,7,1,7,5,7,6,7,11,8,1,8,5,8,6,8,10,8,11,9,6,9,7,9,8,9,9,9,10,10,8,
s,0,2,0,3,0,4,0,5,1,1,1,2,1,5,1,6,1,10,1,11,2,1,2,5,2,6,2,11,2,12,3,1,3,6,3,12,4,0,4,1,4,6,4,12,5,0,5,1,5,6,5,12,6,1,6,6,6,12,7,1,7,2,7,6,7,7,7,11,7,12,8,2,8,6,8,7,8,11,9,7,9,8,9,9,9,10,9,11,
s,0,3,1,2,1,3,1,4,1,5,2,1,2,5,2,6,2,10,2,11,3,1,3,5,3,6,3,11,3,12,4,0,4,6,4,12,5,0,5,6,5,12,6,0,6,1,6,6,6,12,7,0,7,1,7,6,7,12,8,1,8,2,8,6,8,11,8,12,9,6,9,7,9,10,9,11,10,7,10,8,10,9,10,10,
s,0,2,0,3,0,4,1,1,1,2,1,3,1,4,1,5,1,10,2,1,2,5,2,6,2,10,2,11,3,0,3,1,3,5,3,6,3,11,3,12,4,0,4,5,4,6,4,12,5,0,5,5,5,6,5,12,6,0,6,1,6,5,6,6,6,12,7,0,7,1,7,6,7,11,7,12,8,1,8,6,8,11,9,6,9,7,9,8,9,9,9,10,9,11,10,7,10,8,10,9,10,10,
s,0,2,0,3,0,4,0,5,1,1,1,2,1,5,1,6,1,10,2,0,2,1,2,5,2,6,2,10,2,11,3,0,3,5,3,6,3,11,3,12,4,0,4,5,4,6,4,11,4,12,5,0,5,5,5,6,5,12,6,0,6,1,6,5,6,6,6,11,6,12,7,0,7,1,7,5,7,6,7,11,8,5,8,6,8,10,8,11,9,6,9,7,9,8,9,9,9,10,10,7,10,8,10,9,
s,0,3,0,4,1,1,1,2,1,3,1,4,1,5,2,1,2,5,2,6,2,10,3,0,3,5,3,6,3,10,3,11,4,0,4,5,4,6,4,11,5,0,5,5,5,6,5,11,5,12,6,0,6,5,6,6,6,11,6,12,7,0,7,1,7,5,7,6,7,11,8,1,8,5,8,6,8,11,9,5,9,6,9,10,9,11,10,6,10,7,10,8,10,9,10,10,11,7,11,8,
s,0,2,0,3,0,4,1,1,1,2,1,4,1,5,2,0,2,1,2,5,2,6,2,10,3,0,3,5,3,6,3,10,3,11,4,0,4,5,4,6,4,11,5,0,5,5,5,6,5,11,5,12,6,0,6,5,6,6,6,11,7,0,7,1,7,5,7,11,8,5,8,11,9,5,9,6,9,10,10,6,10,7,10,8,10,9,
t,0,12,0,13,0,14,1,10,1,11,1,12,1,13,1,14,1,15,2,3,2,7,2,8,2,9,2,10,2,15,3,3,3,4,3,5,3,6,3,7,3,8,4,1,4,2,4,3,4,4,4,5,5,0,5,1,5,2,5,4,6,4,6,5,
t,0,12,0,13,0,14,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,3,2,6,2,7,2,8,2,9,2,10,2,15,3,3,3,4,3,5,3,6,3,7,4,0,4,1,4,2,4,3,4,4,5,0,5,1,5,4,6,4,
t,0,11,0,12,0,13,0,14,1,3,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,14,2,15,3,1,3,2,3,3,3,4,3,5,3,6,4,0,4,1,4,2,4,3,4,4,5,4,
t,0,12,0,13,0,14,0,15,1,4,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,15,2,16,3,1,3,2,3,3,3,4,3,5,4,0,4,1,4,4,5,5,
t,0,3,0,11,0,12,0,13,0,14,0,15,1,3,1,4,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,15,3,0,3,1,3,2,3,3,3,4,4,4,5,4,
t,0,3,0,10,0,11,0,12,0,13,0,14,0,15,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,14,1,15,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,15,3,0,3,1,3,4,4,4,
t,0,3,0,8,0,9,0,10,0,11,0,12,0,13,0,14,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,14,1,15,2,0,2,1,2,2,2,3,2,4,2,15,3,4,4,4,
t,0,4,1,4,1,5,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,15,2,16,3,0,3,1,3,4,3,5,3,15,3,16,4,4,4,5,
t,0,4,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,15,2,16,3,4,3,15,3,16,4,4,
t,0,4,1,4,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,3,4,3,15,4,4,4,15,5,4,
t,0,4,1,4,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,4,4,4,15,4,16,5,4,5,16,
t,0,4,1,4,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,4,4,4,15,5,4,5,15,
t,0,5,1,1,1,2,1,3,1,4,1,5,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,3,5,3,12,3,13,3,14,3,15,3,16,4,5,4,15,4,16,5,16,
t,0,4,1,4,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,4,3,4,13,4,14,4,15,5,3,5,14,5,15,6,14,6,15,
t,0,4,1,0,1,1,1,2,1,3,1,4,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,3,3,3,4,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,4,3,4,13,4,14,4,15,5,14,5,15,6,14,6,15,
t,0,5,1,0,1,1,1,2,1,3,1,4,1,5,1,6,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,3,4,3,10,3,11,3,12,3,13,3,14,3,15,4,4,4,14,4,15,5,15,6,15,
t,0,4,1,0,1,1,1,2,1,3,1,4,2,1,2,2,2,3,2,4,2,5,2,6,2,7,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,4,3,4,10,4,11,4,12,4,13,4,14,5,13,5,14,6,14,7,14,
t,0,1,0,5,1,0,1,1,1,2,1,3,1,4,1,5,2,4,2,5,2,6,2,7,2,8,2,9,3,4,3,8,3,9,3,10,3,11,3,12,3,13,4,4,4,12,4,13,4,14,4,15,5,14,5,15,6,15,7,15,
t,0,4,1,0,1,1,1,2,1,3,1,4,2,1,2,2,2,3,2,4,2,5,2,6,3,3,3,4,3,5,3,6,3,7,3,8,3,9,4,3,4,8,4,9,4,10,4,11,4,12,4,13,5,3,5,12,5,13,5,14,6,13,6,14,7,14,8,14,
t,0,0,0,1,0,4,1,0,1,1,1,2,1,3,1,4,2,3,2,4,2,5,2,6,2,7,3,3,3,6,3,7,3,8,3,9,3,10,4,3,4,9,4,10,4,11,4,12,4,13,5,12,5,13,5,14,6,13,6,14,7,13,7,14,
t,0,4,1,0,1,1,1,2,1,3,1,4,2,1,2,2,2,3,2,4,2,5,3,3,3,4,3,5,3,6,3,7,3,8,4,3,4,7,4,8,4,9,4,10,5,3,5,10,5,11,5,12,5,13,6,12,6,13,6,14,7,13,7,14,8,13,8,14,
u,0,7,0,8,0,9,0,10,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,1,2,2,2,3,2,4,2,5,2,11,2,12,3,0,3,1,3,2,3,12,4,0,4,12,5,12,6,12,7,11,7,12,7,13,8,9,8,10,8,11,8,12,8,13,9,7,9,8,9,9,9,10,10,4,10,5,10,6,10,7,11,3,11,4,11,5,
u,0,6,0,7,0,8,0,9,0,10,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,2,11,2,12,3,0,3,1,3,12,4,12,5,12,7,11,7,12,7,13,8,9,8,10,8,11,8,12,8,13,9,6,9,7,9,8,9,9,9,10,10,3,10,4,10,5,10,6,10,7,11,2,11,3,11,4,
u,0,7,0,8,0,9,0,10,0,11,1,3,1,4,1,5,1,6,1,7,1,8,1,10,1,11,1,12,2,0,2,1,2,2,2,3,2,4,2,12,3,1,3,12,3,13,4,13,5,13,6,12,7,11,7,12,7,13,7,14,8,9,8,10,8,11,8,12,8,13,8,14,9,5,9,6,9,7,9,8,9,9,9,10,10,3,10,4,10,5,10,6,10,7,11,3,
u,0,6,0,7,0,8,0,9,0,10,0,11,1,2,1,3,1,4,1,5,1,6,1,7,1,10,1,11,1,12,2,0,2,1,2,2,2,3,2,12,3,12,4,12,4,13,5,12,6,12,7,11,7,12,7,13,8,8,8,9,8,10,8,11,8,12,8,13,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,2,10,3,10,4,10,5,10,6,
u,0,5,0,6,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,10,1,11,1,12,2,0,2,1,2,2,2,12,3,12,4,12,5,12,6,11,6,12,7,10,7,11,7,12,7,13,8,7,8,8,8,9,8,10,8,11,8,12,8,13,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,2,10,3,10,4,
u,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,10,1,11,2,0,2,11,2,12,3,12,4,12,5,12,6,11,7,10,7,11,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,10,2,
u,0,8,0,9,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,2,2,3,2,4,2,10,2,11,3,11,3,12,4,12,5,12,6,11,7,11,8,9,8,10,8,11,8,12,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,1,10,2,10,3,10,4,10,5,10,6,10,7,
u,0,7,0,8,0,9,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,0,2,1,2,10,2,11,3,11,4,11,4,12,5,11,6,11,7,10,8,9,8,10,8,11,8,12,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,1,10,2,10,3,10,4,10,5,
u,0,4,0,5,0,6,0,7,0,8,0,9,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,10,2,11,3,11,4,11,5,11,6,11,7,10,8,8,8,9,8,10,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,10,0,10,1,
u,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,11,2,12,3,12,4,12,5,12,6,11,6,12,7,11,8,6,8,7,8,8,8,9,8,10,8,11,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,
u,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,10,2,11,3,11,3,12,4,12,5,11,6,11,7,10,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,
u,0,0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,9,2,10,2,11,3,11,3,12,4,11,4,12,5,11,5,12,6,11,7,11,8,10,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,10,5,10,6,10,7,10,8,10,9,10,10,10,11,
u,0,0,0,1,0,2,0,3,0,4,0,5,0,6,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,10,2,11,3,11,4,11,5,11,6,11,7,10,7,11,8,0,8,1,8,9,8,10,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,10,9,10,10,10,11,
u,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,11,2,12,3,12,4,12,5,12,6,12,7,11,8,0,8,1,8,2,8,3,8,4,8,5,8,9,8,10,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,10,11,
u,0,1,0,2,0,3,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,7,2,8,2,9,2,10,2,11,3,11,3,12,4,12,5,12,6,12,7,11,7,12,8,0,8,11,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,4,10,5,10,6,10,7,10,8,10,9,10,10,10,11,11,11,
u,0,1,0,2,0,3,0,4,0,5,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,2,8,2,9,2,10,2,11,3,11,3,12,4,11,4,12,5,12,6,11,6,12,7,11,8,0,8,1,8,2,8,10,8,11,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,6,10,7,10,8,10,9,10,10,10,11,
u,0,2,1,2,1,3,1,4,1,5,1,6,1,7,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,10,3,11,3,12,4,12,4,13,5,12,5,13,6,12,6,13,7,12,7,13,8,0,8,12,9,0,9,1,9,2,9,3,9,4,9,5,9,11,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,8,11,9,11,10,11,11,
u,0,2,0,3,0,4,1,3,1,4,1,5,1,6,1,7,1,8,2,7,2,8,2,9,2,10,2,11,3,10,3,11,3,12,4,12,5,12,5,13,6,12,6,13,7,12,8,0,8,1,8,2,8,11,8,12,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,10,9,11,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,8,11,9,11,10,11,11,
u,0,2,1,2,1,3,1,4,1,5,2,4,2,5,2,6,2,7,2,8,2,9,3,8,3,9,3,10,3,11,4,11,4,12,5,12,6,12,7,12,8,0,8,12,9,0,9,1,9,2,9,3,9,11,10,2,10,3,10,4,10,5,10,6,10,7,10,9,10,10,11,5,11,6,11,7,11,8,11,9,11,10,12,9,12,10,12,11,
u,0,2,0,3,1,2,1,3,1,4,1,5,1,6,2,5,2,6,2,7,2,8,2,9,3,8,3,9,3,10,3,11,4,11,4,12,5,12,6,12,7,12,8,0,8,1,8,11,8,12,9,0,9,1,9,2,9,3,9,4,9,11,10,3,10,4,10,5,10,6,10,7,10,8,10,9,10,10,11,6,11,7,11,8,11,9,12,9,12,10,
u,0,3,0,4,0,5,1,4,1,5,1,6,1,7,1,8,2,7,2,8,2,9,2,10,2,11,3,10,3,11,3,12,4,12,4,13,5,13,6,13,7,0,7,13,8,0,8,1,8,2,8,3,8,12,9,2,9,3,9,4,9,5,9,6,9,11,9,12,10,5,10,6,10,7,10,8,10,9,10,10,11,8,11,9,11,10,11,11,12,10,12,11,
v,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,2,11,2,12,3,10,3,11,4,9,4,10,5,8,5,9,6,6,6,7,6,8,7,5,7,6,8,4,8,5,9,4,
v,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,11,1,12,1,13,2,11,2,12,3,10,3,11,4,8,4,9,4,10,5,7,5,8,6,6,6,7,7,4,7,5,7,6,8,3,8,4,8,5,9,3,
v,0,0,0,1,0,2,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,11,2,12,2,13,3,11,3,12,4,9,4,10,4,11,5,8,5,9,6,6,6,7,6,8,7,5,7,6,8,4,8,5,9,3,9,4,
v,0,0,0,1,0,2,0,3,0,4,0,5,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,11,2,12,3,10,3,11,3,12,4,9,4,10,5,7,5,8,5,9,6,6,6,7,7,4,7,5,7,6,8,3,8,4,9,2,9,3,
v,0,0,0,1,0,2,0,3,0,4,0,5,0,6,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,11,2,12,3,10,3,11,4,8,4,9,4,10,5,7,5,8,6,5,6,6,6,7,7,3,7,4,7,5,8,2,8,3,8,4,9,2,
v,0,0,0,1,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,3,10,3,11,3,12,4,9,4,10,4,11,5,8,5,9,6,6,6,7,6,8,7,4,7,5,7,6,8,2,8,3,8,4,9,1,9,2,9,3,
v,0,0,0,1,0,2,0,3,1,1,1,2,1,3,1,4,1,5,1,6,1,7,2,6,2,7,2,8,2,9,2,10,2,11,3,10,3,11,3,12,4,9,4,10,4,11,5,7,5,8,5,9,6,5,6,6,6,7,7,3,7,4,7,5,8,1,8,2,8,3,8,4,9,1,9,2,
v,0,0,1,0,1,1,1,2,1,3,1,4,2,3,2,4,2,5,2,6,2,7,2,8,3,7,3,8,3,9,3,10,3,11,4,10,4,11,5,9,5,10,5,11,6,6,6,7,6,8,6,9,7,4,7,5,7,6,7,7,8,2,8,3,8,4,8,5,9,1,9,2,9,3,10,1,
v,0,0,0,1,0,2,1,1,1,2,1,3,1,4,1,5,1,6,2,5,2,6,2,7,2,8,2,9,3,8,3,9,3,10,3,11,3,12,4,11,4,12,5,9,5,10,5,11,6,7,6,8,6,9,7,4,7,5,7,6,7,7,8,2,8,3,8,4,8,5,9,1,9,2,9,3,
v,0,0,1,0,1,1,1,2,1,3,2,2,2,3,2,4,2,5,2,6,3,6,3,7,3,8,3,9,4,9,4,10,4,11,4,12,5,10,5,11,5,12,6,8,6,9,6,10,6,11,7,6,7,7,7,8,7,9,8,3,8,4,8,5,8,6,9,1,9,2,9,3,9,4,10,1,
v,0,0,0,1,1,1,1,2,1,3,1,4,2,3,2,4,2,5,2,6,2,7,3,6,3,7,3,8,3,9,4,9,4,10,4,11,4,12,5,10,5,11,5,12,6,8,6,9,6,10,7,5,7,6,7,7,7,8,8,2,8,3,8,4,8,5,9,0,9,1,9,2,10,0,
v,0,0,1,0,1,1,1,2,2,2,2,3,2,4,3,4,3,5,3,6,3,7,4,7,4,8,4,9,5,9,5,10,5,11,6,10,6,11,7,7,7,8,7,9,7,10,8,4,8,5,8,6,8,7,9,1,9,2,9,3,9,4,10,0,10,1,
v,0,0,0,1,1,0,1,1,1,2,1,3,2,2,2,3,2,4,2,5,3,5,3,6,3,7,4,7,4,8,4,9,5,9,5,10,5,11,6,9,6,10,6,11,7,6,7,7,7,8,7,9,7,10,8,2,8,3,8,4,8,5,8,6,9,0,9,1,9,2,9,3,10,0,
v,0,1,0,2,1,2,1,3,1,4,2,4,2,5,2,6,3,6,3,7,3,8,4,8,4,9,4,10,5,10,5,11,5,12,6,10,6,11,6,12,7,6,7,7,7,8,7,9,7,10,8,2,8,3,8,4,8,5,8,6,9,0,9,1,9,2,
v,0,1,1,1,1,2,1,3,2,3,2,4,2,5,3,5,3,6,3,7,4,7,4,8,4,9,5,8,5,9,5,10,6,10,6,11,6,12,7,9,7,10,7,11,7,12,8,4,8,5,8,6,8,7,8,8,8,9,9,0,9,1,9,2,9,3,9,4,9,5,10,0,
v,0,1,0,2,1,2,1,3,1,4,2,3,2,4,2,5,3,5,3,6,3,7,4,7,4,8,4,9,5,9,5,10,6,10,6,11,6,12,7,7,7,8,7,9,7,10,7,11,8,2,8,3,8,4,8,5,8,6,8,7,8,8,9,0,9,1,9,2,9,3,
v,0,2,1,2,1,3,1,4,2,3,2,4,2,5,3,5,3,6,3,7,4,7,4,8,5,8,5,9,5,10,6,10,6,11,7,11,7,12,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,10,0,10,1,
v,0,2,0,3,1,2,1,3,1,4,2,4,2,5,2,6,3,5,3,6,3,7,4,7,4,8,5,8,5,9,5,10,6,10,6,11,7,11,7,12,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,0,9,1,9,2,9,3,9,4,9,5,9,6,
v,0,2,0,3,1,3,1,4,1,5,2,4,2,5,2,6,3,6,3,7,4,7,4,8,4,9,5,9,5,10,6,10,6,11,7,10,7,11,7,12,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,9,0,9,1,9,2,
v,0,2,0,3,1,2,1,3,1,4,2,4,2,5,3,5,3,6,4,6,4,7,4,8,5,7,5,8,5,9,6,9,6,10,7,10,7,11,8,8,8,9,8,10,8,11,8,12,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,
v,0,3,0,4,1,4,1,5,2,5,2,6,3,6,3,7,3,8,4,8,4,9,5,9,5,10,6,10,6,11,7,11,7,12,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,
w,0,6,0,7,0,8,0,9,0,10,0,11,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,10,2,11,3,8,3,9,4,7,4,8,5,5,5,6,5,7,6,4,6,5,7,3,7,4,7,11,7,12,7,13,7,14,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,9,2,9,3,9,12,9,13,9,14,10,11,10,12,11,10,11,11,12,8,12,9,12,10,13,7,13,8,14,6,14,7,15,5,15,6,
w,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,11,1,12,2,10,2,11,2,12,3,9,3,10,4,7,4,8,4,9,5,6,5,7,6,4,6,5,7,3,7,4,7,5,7,12,7,13,7,14,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,9,13,9,14,10,12,10,13,11,10,11,11,12,9,12,10,13,7,13,8,13,9,14,6,14,7,15,5,15,6,
w,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,10,1,11,1,12,2,10,2,11,3,8,3,9,3,10,4,7,4,8,5,5,5,6,6,3,6,4,6,5,7,2,7,3,7,4,7,11,7,12,7,13,7,14,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,9,12,9,13,9,14,10,11,10,12,11,9,11,10,11,11,12,8,12,9,13,6,13,7,13,8,14,5,14,6,15,4,15,5,
w,0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,1,10,1,11,1,12,2,10,2,11,3,8,3,9,4,6,4,7,4,8,5,4,5,5,5,6,6,2,6,3,6,4,7,2,7,3,7,4,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,9,12,9,13,9,14,10,10,10,11,10,12,11,9,11,10,12,7,12,8,12,9,13,5,13,6,13,7,14,4,14,5,15,4,
w,0,0,0,1,0,2,0,3,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,2,10,2,11,2,12,3,9,3,10,3,11,4,7,4,8,4,9,5,5,5,6,5,7,6,3,6,4,6,5,7,1,7,2,7,3,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,10,11,10,12,10,13,11,10,11,11,12,8,12,9,12,10,13,6,13,7,13,8,14,4,14,5,14,6,15,3,15,4,16,3,
w,0,0,0,1,0,2,0,3,0,4,0,5,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,2,10,2,11,2,12,3,9,3,10,3,11,4,7,4,8,4,9,5,5,5,6,6,2,6,3,6,4,7,1,7,2,7,3,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,9,8,9,9,9,10,9,11,9,12,9,13,10,11,10,12,10,13,11,9,11,10,11,11,12,7,12,8,12,9,13,5,13,6,13,7,14,3,14,4,14,5,15,2,15,3,
w,0,0,1,0,1,1,1,2,1,3,1,4,1,5,1,6,2,5,2,6,2,7,2,8,2,9,2,10,2,11,3,10,3,11,4,8,4,9,4,10,5,6,5,7,5,8,6,4,6,5,6,6,7,1,7,2,7,3,8,1,8,2,8,3,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,9,10,10,10,11,10,12,11,11,11,12,12,8,12,9,12,10,13,6,13,7,13,8,14,4,14,5,14,6,15,2,15,3,15,4,16,2,
w,0,0,0,1,0,2,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,2,6,2,7,2,8,2,9,2,10,2,11,3,10,3,11,4,8,4,9,4,10,5,5,5,6,5,7,5,8,6,3,6,4,6,5,7,0,7,1,7,2,8,0,8,1,8,2,8,3,8,4,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,10,9,10,10,10,11,10,12,11,10,11,11,11,12,12,8,12,9,12,10,13,5,13,6,13,7,13,8,14,3,14,4,14,5,15,1,15,2,15,3,16,1,
w,0,0,1,0,1,1,1,2,1,3,1,4,2,3,2,4,2,5,2,6,2,7,2,8,2,9,3,8,3,9,3,10,3,11,3,12,4,10,4,11,4,12,5,8,5,9,5,10,5,11,6,5,6,6,6,7,6,8,7,2,7,3,7,4,7,5,8,1,8,2,8,3,9,1,9,2,9,3,9,4,9,5,9,6,10,5,10,6,10,7,10,8,10,9,10,10,10,11,11,10,11,11,11,12,11,13,12,10,12,11,12,12,12,13,13,8,13,9,13,10,14,5,14,6,14,7,14,8,15,2,15,3,15,4,15,5,16,2,16,3,
w,0,0,0,1,1,1,1,2,1,3,1,4,1,5,2,4,2,5,2,6,2,7,2,8,2,9,3,9,3,10,3,11,3,12,4,10,4,11,4,12,5,7,5,8,5,9,5,10,5,11,6,4,6,5,6,6,6,7,7,1,7,2,7,3,7,4,8,1,8,2,8,3,9,1,9,2,9,3,9,4,9,5,9,6,10,6,10,7,10,8,10,9,10,10,10,11,11,10,11,11,11,12,12,10,12,11,12,12,13,6,13,7,13,8,13,9,13,10,14,3,14,4,14,5,14,6,14,7,15,1,15,2,15,3,15,4,16,1,
w,0,0,0,1,0,2,0,3,1,2,1,3,1,4,1,5,1,6,2,6,2,7,2,8,2,9,3,9,3,10,3,11,3,12,4,10,4,11,4,12,5,6,5,7,5,8,5,9,5,10,6,3,6,4,6,5,6,6,7,0,7,1,7,2,8,0,8,1,8,2,8,3,9,3,9,4,9,5,9,6,9,7,10,7,10,8,10,9,10,10,10,11,11,10,11,11,11,12,12,8,12,9,12,10,12,11,12,12,13,5,13,6,13,7,13,8,14,1,14,2,14,3,14,4,14,5,15,0,15,1,15,2,
w,0,0,0,1,1,0,1,1,1,2,1,3,2,3,2,4,2,5,2,6,3,6,3,7,3,8,3,9,4,9,4,10,4,11,5,10,5,11,6,5,6,6,6,7,6,8,6,9,6,10,7,1,7,2,7,3,7,4,7,5,8,0,8,1,8,2,9,0,9,1,9,2,9,3,9,4,10,3,10,4,10,5,10,6,10,7,11,7,11,8,11,9,11,10,12,9,12,10,12,11,13,8,13,9,13,10,13,11,14,4,14,5,14,6,14,7,14,8,15,0,15,1,15,2,15,3,15,4,16,0,
w,0,1,0,2,0,3,1,2,1,3,1,4,1,5,2,5,2,6,2,7,2,8,3,8,3,9,3,10,4,11,4,12,5,10,5,11,5,12,6,5,6,6,6,7,6,8,6,9,6,10,7,1,7,2,7,3,7,4,7,5,8,1,8,2,8,3,9,2,9,3,9,4,9,5,10,5,10,6,10,7,10,8,11,8,11,9,11,10,11,11,12,10,12,11,12,12,13,7,13,8,13,9,13,10,13,11,13,12,14,3,14,4,14,5,14,6,14,7,14,8,15,0,15,1,15,2,15,3,
w,0,1,1,1,1,2,1,3,2,3,2,4,2,5,2,6,3,6,3,7,3,8,4,8,4,9,4,10,4,11,5,10,5,11,5,12,6,9,6,10,6,11,6,12,7,2,7,3,7,4,7,5,7,6,7,7,7,8,7,9,8,0,8,1,8,2,8,3,9,0,9,1,9,2,9,3,10,3,10,4,10,5,10,6,11,6,11,7,11,8,12,8,12,9,12,10,12,11,13,9,13,10,13,11,14,5,14,6,14,7,14,8,14,9,14,10,14,11,15,0,15,1,15,2,15,3,15,4,15,5,15,6,16,0,16,1,
w,0,2,0,3,1,3,1,4,1,5,2,5,2,6,2,7,3,7,3,8,3,9,4,9,4,10,4,11,4,12,5,11,5,12,5,13,6,8,6,9,6,10,6,11,6,12,6,13,7,1,7,2,7,3,7,4,7,5,7,6,7,7,7,8,8,1,8,2,8,3,9,2,9,3,9,4,9,5,10,5,10,6,10,7,11,7,11,8,11,9,12,9,12,10,12,11,12,12,13,10,13,11,13,12,14,4,14,5,14,6,14,7,14,8,14,9,14,10,14,11,15,0,15,1,15,2,15,3,15,4,15,5,
w,0,2,1,2,1,3,1,4,2,3,2,4,2,5,2,6,3,6,3,7,3,8,4,8,4,9,4,10,5,10,5,11,5,12,6,11,6,12,6,13,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,8,1,8,2,8,3,8,4,8,5,8,6,9,1,9,2,9,3,10,3,10,4,10,5,11,5,11,6,11,7,12,7,12,8,12,9,13,9,13,10,13,11,14,9,14,10,14,11,15,0,15,1,15,2,15,3,15,4,15,5,15,6,15,7,15,8,15,9,15,10,16,0,16,1,16,2,
w,0,3,0,4,1,3,1,4,1,5,2,5,2,6,2,7,3,7,3,8,3,9,4,9,4,10,4,11,5,11,5,12,5,13,6,12,6,13,6,14,7,2,7,3,7,4,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,8,2,8,3,8,4,9,2,9,3,9,4,10,4,10,5,10,6,11,6,11,7,11,8,12,8,12,9,12,10,13,10,13,11,13,12,14,6,14,7,14,8,14,9,14,10,14,11,14,12,15,0,15,1,15,2,15,3,15,4,15,5,15,6,15,7,15,8,15,9,
w,0,3,0,4,1,4,1,5,1,6,2,6,2,7,2,8,3,8,3,9,4,9,4,10,4,11,5,11,5,12,5,13,6,12,6,13,6,14,7,2,7,3,7,4,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,8,1,8,2,8,3,9,3,9,4,9,5,10,5,10,6,10,7,11,7,11,8,11,9,12,9,12,10,13,10,13,11,13,12,14,0,14,1,14,2,14,3,14,4,14,5,14,6,14,7,14,8,14,9,14,10,14,11,14,12,15,0,15,1,15,2,15,3,15,4,
w,0,4,0,5,0,6,1,6,1,7,1,8,2,7,2,8,2,9,3,9,3,10,3,11,4,11,4,12,5,12,5,13,5,14,6,3,6,4,6,5,6,6,6,7,6,8,6,9,6,10,6,12,6,13,6,14,7,2,7,3,7,4,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,7,14,8,3,8,4,9,5,9,6,10,6,10,7,10,8,11,8,11,9,11,10,12,10,12,11,13,10,13,11,13,12,14,0,14,1,14,2,14,3,14,4,14,5,14,6,14,7,14,8,14,9,14,10,14,11,14,12,
w,0,4,0,5,1,5,1,6,1,7,2,6,2,7,2,8,3,8,3,9,4,9,4,10,4,11,5,11,5,12,6,12,6,13,6,14,7,2,7,3,7,4,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,7,14,8,2,8,3,8,4,8,12,8,13,8,14,9,3,9,4,9,5,10,5,10,6,10,7,11,7,11,8,12,8,12,9,12,10,13,10,13,11,14,0,14,1,14,2,14,3,14,4,14,5,14,6,14,7,14,8,14,10,14,11,14,12,15,0,15,1,15,2,15,3,15,4,15,5,15,6,15,7,15,8,15,9,15,10,15,11,15,12,
w,0,5,0,6,0,7,1,7,1,8,2,8,2,9,3,9,3,10,3,11,4,11,4,12,5,12,5,13,6,3,6,4,6,13,6,14,6,15,7,3,7,4,7,5,7,6,7,7,7,8,7,9,7,10,7,11,7,12,7,13,7,14,7,15,8,3,8,4,8,5,8,15,9,5,9,6,10,6,10,7,10,8,11,8,11,9,12,9,12,10,12,11,13,11,13,12,14,0,14,1,14,2,14,3,14,4,14,5,14,6,14,7,14,8,14,9,14,10,14,11,14,12,15,10,15,11,15,12,
x,0,10,1,10,2,9,2,10,3,8,3,9,4,8,4,9,5,0,5,1,5,2,5,7,5,8,6,1,6,2,6,3,6,4,6,5,6,6,6,7,7,5,7,6,7,7,7,8,7,9,7,10,8,5,8,6,8,9,8,10,8,11,8,12,8,13,9,4,9,5,9,12,9,13,10,4,11,3,11,4,12,2,12,3,
x,0,11,1,11,2,10,2,11,3,9,3,10,4,0,4,1,4,8,4,9,5,1,5,2,5,3,5,4,5,8,6,3,6,4,6,5,6,6,6,7,6,8,7,6,7,7,7,8,7,9,7,10,8,5,8,6,8,10,8,11,8,12,8,13,8,14,9,5,9,6,9,13,9,14,10,4,10,5,11,3,11,4,12,3,13,3,
x,0,11,1,11,2,10,2,11,3,9,3,10,4,0,4,1,4,2,4,8,4,9,5,1,5,2,5,3,5,4,5,5,5,7,5,8,6,4,6,5,6,6,6,7,6,8,7,6,7,7,7,8,7,9,7,10,8,5,8,6,8,10,8,11,8,12,8,13,9,4,9,5,9,12,9,13,9,14,10,3,10,4,11,3,12,3,
x,0,11,1,10,1,11,2,10,2,11,3,0,3,9,3,10,4,0,4,1,4,2,4,8,4,9,5,2,5,3,5,4,5,5,5,7,5,8,6,5,6,6,6,7,6,8,7,5,7,6,7,7,7,8,7,9,7,10,8,4,8,5,8,9,8,10,8,11,8,12,8,13,9,4,9,12,9,13,10,3,10,4,11,2,11,3,12,2,
x,0,11,1,10,1,11,2,9,2,10,3,0,3,1,3,8,3,9,4,0,4,1,4,2,4,3,4,7,4,8,5,2,5,3,5,4,5,5,5,6,5,7,6,5,6,6,6,7,7,5,7,6,7,7,7,8,7,9,7,10,8,4,8,5,8,9,8,10,8,11,8,12,9,3,9,4,9,12,9,13,10,2,10,3,11,2,
x,0,11,1,10,1,11,2,9,2,10,3,0,3,1,3,8,3,9,4,1,4,2,4,3,4,7,4,8,5,3,5,4,5,5,5,6,5,7,6,5,6,6,6,7,7,4,7,5,7,7,7,8,7,9,7,10,8,3,8,4,8,9,8,10,8,11,8,12,9,2,9,3,9,11,9,12,10,1,10,2,11,1,
x,0,11,1,10,1,11,2,0,2,9,2,10,3,0,3,1,3,2,3,8,3,9,4,1,4,2,4,3,4,4,4,7,4,8,5,3,5,4,5,5,5,6,5,7,6,4,6,5,6,6,6,7,7,4,7,5,7,7,7,8,7,9,8,3,8,4,8,9,8,10,8,11,8,12,9,1,9,2,9,3,9,11,9,12,10,1,10,2,11,1,
x,0,11,1,10,1,11,2,0,2,9,2,10,3,0,3,1,3,2,3,7,3,8,3,9,4,2,4,3,4,4,4,6,4,7,4,8,5,4,5,5,5,6,5,7,6,4,6,5,6,6,6,7,7,3,7,4,7,7,7,8,7,9,8,2,8,3,8,9,8,10,8,11,9,1,9,2,9,11,9,12,10,0,10,1,
x,0,12,1,0,1,11,1,12,2,1,2,2,2,9,2,10,2,11,3,1,3,2,3,3,3,4,3,8,3,9,3,10,4,3,4,4,4,5,4,7,4,8,5,5,5,6,5,7,6,4,6,5,6,6,6,7,6,8,7,3,7,4,7,5,7,8,7,9,7,10,8,2,8,3,8,10,8,11,8,12,9,1,9,2,9,11,9,12,10,1,
x,0,12,1,0,1,1,1,10,1,11,1,12,2,1,2,2,2,9,2,10,2,11,3,2,3,3,3,4,3,8,3,9,4,4,4,5,4,6,4,7,4,8,5,5,5,6,5,7,6,4,6,5,6,6,6,7,6,8,7,3,7,4,7,8,7,9,7,10,8,1,8,2,8,3,8,10,8,11,8,12,9,1,9,11,9,12,
x,0,0,0,12,1,0,1,1,1,10,1,11,1,12,2,1,2,2,2,3,2,9,2,10,3,2,3,3,3,4,3,7,3,8,3,9,4,4,4,5,4,6,4,7,5,4,5,5,5,6,5,7,6,3,6,4,6,5,6,7,6,8,7,2,7,3,7,8,7,9,7,10,8,0,8,1,8,2,8,10,8,11,9,0,9,11,9,12,10,12,
x,0,0,0,12,1,0,1,1,1,2,1,10,1,11,1,12,2,1,2,2,2,3,2,8,2,9,2,10,3,3,3,4,3,7,3,8,3,9,4,4,4,5,4,6,4,7,5,4,5,5,5,6,5,7,6,2,6,3,6,4,6,7,6,8,7,1,7,2,7,8,7,9,7,10,8,0,8,1,8,9,8,10,8,11,9,0,9,11,
x,0,0,1,0,1,1,1,11,1,12,2,0,2,1,2,2,2,10,2,11,3,2,3,3,3,8,3,9,3,10,4,3,4,4,4,5,4,6,4,7,4,8,5,4,5,5,5,6,5,7,6,3,6,4,6,5,6,6,6,7,7,1,7,2,7,3,7,7,7,8,8,0,8,1,8,2,8,8,8,9,9,0,9,9,9,10,9,11,10,10,10,11,
x,0,1,1,1,1,2,1,12,2,2,2,3,2,10,2,11,2,12,3,3,3,4,3,5,3,9,3,10,3,11,4,4,4,5,4,6,4,7,4,8,4,9,5,5,5,6,5,7,6,3,6,4,6,5,6,6,6,7,6,8,7,1,7,2,7,3,7,8,7,9,8,0,8,1,8,2,8,9,8,10,9,0,9,10,9,11,10,11,10,12,
x,0,1,0,2,1,1,1,2,1,3,1,12,2,2,2,3,2,4,2,10,2,11,2,12,3,3,3,4,3,5,3,8,3,9,3,10,4,5,4,6,4,7,4,8,5,4,5,5,5,6,5,7,6,2,6,3,6,4,6,7,6,8,7,0,7,1,7,2,7,3,7,8,7,9,8,0,8,1,8,9,8,10,9,10,9,11,10,11,
x,0,1,1,1,1,2,2,2,2,3,2,12,3,3,3,4,3,10,3,11,3,12,4,4,4,5,4,8,4,9,4,10,5,5,5,6,5,7,5,8,6,3,6,4,6,5,6,6,6,7,7,1,7,2,7,3,7,4,7,7,7,8,8,0,8,1,8,2,8,8,8,9,9,0,9,9,9,10,10,10,10,11,11,11,
x,0,2,1,2,1,3,2,3,2,4,2,13,3,4,3,5,3,10,3,11,3,12,3,13,4,5,4,6,4,8,4,9,4,10,4,11,5,5,5,6,5,7,5,8,6,3,6,4,6,5,6,6,6,7,6,8,7,1,7,2,7,3,7,4,7,8,7,9,8,0,8,1,8,9,8,10,9,10,9,11,10,10,10,11,10,12,11,11,
x,0,2,1,2,1,3,2,2,2,3,2,4,3,3,3,4,3,12,3,13,4,4,4,5,4,10,4,11,4,12,4,13,5,5,5,6,5,7,5,8,5,9,5,10,6,5,6,6,6,7,6,8,7,2,7,3,7,4,7,5,7,7,7,8,8,0,8,1,8,2,8,3,8,8,8,9,9,0,9,9,9,10,10,9,10,10,11,10,11,11,12,11,
x,0,2,1,2,1,3,2,3,2,4,3,4,3,5,3,12,3,13,4,5,4,9,4,10,4,11,4,12,4,13,5,5,5,6,5,7,5,8,5,9,5,10,6,3,6,4,6,5,6,6,6,7,7,1,7,2,7,3,7,4,7,7,7,8,8,0,8,1,8,8,8,9,9,8,9,9,10,9,10,10,11,10,11,11,12,11,
x,0,2,1,2,1,3,2,2,2,3,3,3,3,4,4,4,4,5,4,12,4,13,5,5,5,6,5,8,5,9,5,10,5,11,5,12,5,13,6,5,6,6,6,7,6,8,6,9,7,2,7,3,7,4,7,5,7,6,7,7,8,0,8,1,8,2,8,3,8,7,8,8,9,0,9,8,9,9,10,8,10,9,11,9,11,10,12,10,12,11,
x,0,3,1,3,1,4,2,4,2,5,3,4,3,5,4,5,4,6,4,12,4,13,4,14,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,6,5,6,6,6,7,6,8,6,9,7,1,7,2,7,3,7,4,7,5,7,7,7,8,8,0,8,1,8,2,8,8,8,9,9,9,10,9,10,10,11,10,11,11,12,11,13,11,
y,0,15,1,15,1,16,2,15,2,16,3,15,4,14,4,15,5,0,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,6,0,6,1,6,2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,6,10,6,11,6,12,6,13,7,10,7,11,8,9,8,10,9,8,9,9,10,7,10,8,11,6,11,7,12,4,12,5,12,6,13,3,13,4,14,3,
y,0,16,1,16,1,17,2,16,2,17,3,16,4,15,4,16,5,0,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10,5,11,5,12,5,13,5,14,5,15,6,7,6,8,6,9,6,10,6,11,6,12,6,13,7,11,7,12,8,10,8,11,9,8,9,9,9,10,10,7,10,8,11,6,11,7,12,5,12,6,13,3,13,4,13,5,14,3,
y,0,16,0,17,1,16,1,17,2,16,3,0,3,1,3,15,3,16,4,0,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,5,10,5,11,5,12,5,13,6,11,6,12,7,9,7,10,7,11,8,8,8,9,9,7,9,8,10,5,10,6,10,7,11,4,11,5,12,3,12,4,13,3,
y,0,16,1,16,1,17,2,16,3,0,3,1,3,2,3,3,3,4,3,15,3,16,4,0,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,5,11,5,12,5,13,6,11,6,12,7,9,7,10,8,7,8,8,8,9,9,6,9,7,10,4,10,5,10,6,11,3,11,4,11,5,12,2,12,3,
y,0,16,1,16,2,16,3,0,3,1,3,2,3,3,3,4,3,5,3,15,3,16,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,5,11,5,12,5,13,6,10,6,11,6,12,7,8,7,9,7,10,8,7,8,8,9,5,9,6,9,7,10,4,10,5,11,2,11,3,11,4,12,2,
y,0,16,1,16,2,0,2,1,2,16,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,15,3,16,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,5,10,5,11,5,12,5,13,6,10,6,11,7,8,7,9,7,10,8,6,8,7,8,8,9,4,9,5,9,6,10,3,10,4,10,5,11,1,11,2,11,3,
y,0,16,1,16,2,0,2,1,2,2,2,16,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,15,3,16,4,6,4,7,4,8,4,9,4,10,4,11,4,13,4,14,4,15,5,10,5,11,5,12,5,13,6,9,6,10,6,11,7,7,7,8,7,9,8,5,8,6,8,7,9,4,9,5,9,6,10,2,10,3,10,4,11,1,11,2,
y,0,16,1,0,1,16,2,0,2,1,2,2,2,3,2,16,3,2,3,3,3,4,3,5,3,6,3,7,3,15,3,16,4,6,4,7,4,8,4,9,4,10,4,11,4,13,4,14,4,15,5,10,5,11,5,12,5,13,6,9,6,10,6,11,7,7,7,8,7,9,8,5,8,6,8,7,9,3,9,4,9,5,10,1,10,2,10,3,11,1,
y,0,0,0,1,0,2,0,17,1,1,1,2,1,3,1,4,1,5,1,16,1,17,2,4,2,5,2,6,2,7,2,8,2,9,2,16,2,17,3,8,3,9,3,10,3,11,3,12,3,14,3,15,3,16,4,11,4,12,4,13,4,14,5,9,5,10,5,11,5,12,6,7,6,8,6,9,7,5,7,6,7,7,8,3,8,4,8,5,9,1,9,2,9,3,10,1,
y,0,0,1,0,1,1,1,2,1,3,1,17,2,2,2,3,2,4,2,5,2,6,2,16,2,17,3,5,3,6,3,7,3,8,3,9,3,16,3,17,4,8,4,9,4,10,4,11,4,12,4,14,4,15,4,16,5,10,5,11,5,12,5,13,5,14,6,9,6,10,6,11,7,6,7,7,7,8,7,9,8,4,8,5,8,6,9,1,9,2,9,3,9,4,10,1,10,2,
y,0,0,0,1,1,0,1,1,1,2,1,3,1,4,1,16,1,17,2,3,2,4,2,5,2,6,2,16,2,17,3,6,3,7,3,8,3,9,3,15,3,16,4,9,4,10,4,11,4,12,4,13,4,14,4,15,5,10,5,11,5,12,5,13,6,8,6,9,6,10,6,11,7,5,7,6,7,7,7,8,8,2,8,3,8,4,8,5,9,0,9,1,9,2,9,3,10,0,
y,0,0,1,0,1,1,1,2,2,1,2,2,2,3,2,4,2,16,2,17,3,4,3,5,3,6,3,7,3,16,3,17,4,6,4,7,4,8,4,9,4,16,5,9,5,10,5,11,5,13,5,14,5,15,5,16,6,10,6,11,6,12,6,13,7,7,7,8,7,9,7,10,8,4,8,5,8,6,8,7,8,8,9,1,9,2,9,3,9,4,9,5,10,0,10,1,10,2,
y,0,0,1,0,1,1,1,2,1,3,2,2,2,3,2,4,2,5,2,16,2,17,3,4,3,5,3,6,3,7,3,16,3,17,4,7,4,8,4,9,4,15,4,16,5,9,5,10,5,11,5,13,5,14,5,15,6,10,6,11,6,12,6,13,7,6,7,7,7,8,7,9,7,10,8,3,8,4,8,5,8,6,8,7,9,0,9,1,9,2,9,3,10,0,
y,0,1,0,2,1,2,1,3,1,4,2,4,2,5,2,6,2,17,2,18,3,6,3,7,3,8,3,17,3,18,4,8,4,9,4,10,4,16,4,17,5,10,5,11,5,12,5,14,5,15,5,16,6,10,6,11,6,12,6,13,6,14,7,6,7,7,7,8,7,9,7,10,8,2,8,3,8,4,8,5,8,6,8,7,9,0,9,1,9,2,9,3,
y,0,1,1,1,1,2,1,3,2,2,2,3,2,4,2,5,3,4,3,5,3,6,3,7,3,17,4,6,4,7,4,8,4,17,5,8,5,9,5,10,5,16,5,17,6,10,6,11,6,12,6,14,6,15,6,16,7,9,7,10,7,11,7,12,7,13,7,14,8,4,8,5,8,6,8,7,8,8,8,9,8,10,9,0,9,1,9,2,9,3,9,4,9,5,10,0,10,1,
y,0,1,0,2,1,1,1,2,1,3,2,3,2,4,2,5,3,5,3,6,3,7,3,17,4,7,4,8,4,9,4,17,5,8,5,9,5,10,5,16,5,17,6,10,6,11,6,12,6,14,6,15,6,16,7,8,7,9,7,10,7,11,7,12,7,13,7,14,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,9,0,9,1,9,2,9,3,9,4,
y,0,2,1,2,1,3,2,3,2,4,2,5,3,5,3,6,3,7,4,6,4,7,4,8,5,8,5,9,5,10,5,18,6,10,6,11,6,17,6,18,7,11,7,12,7,13,7,14,7,15,7,16,7,17,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,10,0,10,1,10,2,
y,0,2,0,3,1,2,1,3,1,4,2,4,2,5,3,5,3,6,3,7,4,7,4,8,5,8,5,9,5,10,5,18,6,10,6,11,6,17,6,18,7,11,7,12,7,13,7,14,7,15,7,16,7,17,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,
y,0,2,0,3,1,3,1,4,2,4,2,5,2,6,3,6,3,7,4,7,4,8,4,9,5,8,5,9,5,10,5,18,6,10,6,11,6,17,6,18,7,11,7,12,7,13,7,14,7,15,7,16,7,17,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,9,0,9,1,9,2,9,3,
y,0,2,1,2,1,3,1,4,2,3,2,4,2,5,3,5,3,6,4,6,4,7,5,7,5,8,5,9,6,9,6,10,6,17,6,18,7,10,7,11,7,17,7,18,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,
y,0,3,0,4,1,4,1,5,2,5,2,6,3,6,3,7,4,7,4,8,4,9,5,9,5,10,6,10,6,11,6,18,6,19,7,11,7,12,7,18,7,19,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,14,8,15,8,16,8,17,8,18,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,12,9,13,9,14,9,15,9,16,
z,0,10,1,9,1,10,1,11,2,8,2,9,2,10,2,11,3,8,3,9,3,11,4,0,4,7,4,8,4,11,4,12,5,0,5,7,5,12,6,0,6,6,6,7,6,12,7,1,7,6,7,12,7,13,8,1,8,5,8,6,8,13,9,1,9,2,9,5,9,13,10,2,10,4,10,5,11,2,11,3,11,4,12,2,12,3,12,4,13,3,
z,0,10,0,11,1,10,1,11,2,9,2,10,2,11,2,12,3,9,3,12,4,0,4,1,4,8,4,9,4,12,5,1,5,7,5,8,5,12,5,13,6,1,6,7,6,8,6,13,7,1,7,2,7,6,7,7,7,13,8,2,8,6,8,13,8,14,9,2,9,5,9,6,9,14,10,2,10,3,10,4,10,5,11,3,11,4,11,5,12,3,12,4,13,3,
z,0,10,0,11,1,10,1,11,2,9,2,10,2,11,2,12,3,8,3,9,3,12,4,0,4,1,4,8,4,9,4,12,5,1,5,7,5,8,5,12,5,13,6,1,6,7,6,12,6,13,7,1,7,6,7,7,7,13,8,2,8,5,8,6,8,13,9,2,9,5,9,13,9,14,10,2,10,3,10,4,10,5,11,2,11,3,11,4,12,3,
z,0,10,0,11,1,10,1,11,2,9,2,10,2,11,2,12,3,0,3,8,3,9,3,12,4,0,4,8,4,12,5,1,5,7,5,8,5,12,6,1,6,6,6,7,6,12,6,13,7,1,7,5,7,6,7,12,7,13,8,1,8,5,8,13,9,2,9,4,9,5,9,13,10,2,10,3,10,4,10,13,11,2,11,3,12,2,12,3,
z,0,10,0,11,1,9,1,10,1,11,2,9,2,10,2,11,3,0,3,8,3,9,3,11,3,12,4,0,4,7,4,8,4,12,5,0,5,1,5,6,5,7,5,12,6,1,6,6,6,7,6,12,7,1,7,5,7,6,7,12,8,1,8,4,8,5,8,12,8,13,9,1,9,3,9,4,9,13,10,1,10,2,10,3,10,13,11,2,11,3,12,2,
z,0,10,0,11,1,9,1,10,1,11,2,0,2,8,2,9,2,10,2,11,3,0,3,8,3,9,3,11,4,0,4,7,4,8,4,11,4,12,5,0,5,6,5,7,5,12,6,0,6,1,6,5,6,6,6,12,7,1,7,4,7,5,7,12,8,1,8,4,8,12,9,1,9,2,9,3,9,4,9,12,10,1,10,2,10,3,10,12,10,13,11,1,11,2,
z,0,10,0,11,1,9,1,10,1,11,2,0,2,8,2,9,2,10,2,11,3,0,3,7,3,8,3,11,4,0,4,7,4,11,5,0,5,6,5,7,5,11,5,12,6,0,6,5,6,6,6,11,6,12,7,0,7,1,7,4,7,5,7,12,8,1,8,3,8,4,8,12,9,1,9,2,9,3,9,12,10,1,10,2,10,12,11,1,
z,0,10,0,11,1,9,1,10,1,11,2,0,2,8,2,9,2,11,3,0,3,7,3,8,3,11,4,0,4,6,4,7,4,11,5,0,5,5,5,6,5,11,6,0,6,4,6,5,6,11,7,0,7,3,7,4,7,11,7,12,8,0,8,2,8,3,8,11,8,12,9,0,9,1,9,2,9,12,10,0,10,1,10,12,
z,0,11,0,12,1,0,1,1,1,10,1,11,1,12,2,1,2,9,2,10,2,12,3,1,3,8,3,9,3,12,4,1,4,7,4,8,4,12,5,1,5,6,5,7,5,12,6,1,6,5,6,6,6,12,7,1,7,4,7,5,7,12,8,1,8,2,8,3,8,4,8,12,9,1,9,2,9,3,9,12,10,1,10,2,10,12,
z,0,11,0,12,1,0,1,1,1,10,1,11,1,12,2,0,2,1,2,8,2,9,2,10,2,12,3,0,3,1,3,7,3,8,3,9,3,12,4,1,4,6,4,7,4,12,5,1,5,5,5,6,5,12,6,1,6,4,6,5,6,12,7,1,7,3,7,4,7,12,8,1,8,2,8,3,8,12,9,1,9,2,9,12,10,1,10,12,
z,0,0,0,11,0,12,1,0,1,10,1,11,1,12,2,0,2,9,2,10,2,11,2,12,3,0,3,8,3,9,3,12,4,0,4,6,4,7,4,12,5,0,5,5,5,6,5,12,6,0,6,4,6,5,6,12,7,0,7,3,7,4,7,12,8,0,8,1,8,2,8,3,8,12,9,0,9,1,9,2,9,12,10,0,10,1,10,12,
z,0,0,0,10,0,11,0,12,1,0,1,9,1,10,1,11,1,12,2,0,2,8,2,9,2,11,2,12,3,0,3,7,3,8,3,11,4,0,4,5,4,6,4,7,4,11,5,0,5,4,5,5,5,11,6,0,6,3,6,4,6,11,7,0,7,1,7,2,7,3,7,11,8,0,8,1,8,2,8,11,9,0,9,11,10,11,
z,0,0,1,0,1,10,1,11,1,12,2,0,2,9,2,10,2,11,3,0,3,8,3,9,3,11,4,0,4,6,4,7,4,8,4,11,5,0,5,5,5,6,5,11,6,0,6,4,6,5,6,11,7,0,7,2,7,3,7,4,7,11,8,0,8,1,8,2,8,11,9,0,9,1,9,11,10,11,11,11,
z,0,1,1,1,1,11,1,12,2,1,2,10,2,11,2,12,3,1,3,8,3,9,3,10,3,12,4,1,4,7,4,8,4,12,5,1,5,5,5,6,5,7,5,12,6,1,6,4,6,5,6,12,7,0,7,1,7,2,7,3,7,4,7,12,8,0,8,1,8,2,8,12,9,0,9,1,9,11,9,12,10,11,10,12,
z,0,1,1,1,1,11,1,12,2,1,2,9,2,10,2,11,2,12,3,1,3,8,3,9,3,12,4,1,4,6,4,7,4,8,4,12,5,0,5,1,5,5,5,6,5,12,6,0,6,3,6,4,6,5,6,11,6,12,7,0,7,1,7,2,7,3,7,11,7,12,8,0,8,1,8,2,8,11,9,11,10,11,
z,0,1,1,1,2,1,2,11,2,12,3,1,3,9,3,10,3,11,3,12,4,1,4,7,4,8,4,9,4,12,5,0,5,6,5,7,5,12,6,0,6,4,6,5,6,6,6,11,6,12,7,0,7,2,7,3,7,4,7,11,8,0,8,1,8,2,8,11,9,0,9,1,9,11,10,11,11,11,
z,0,2,1,2,2,2,2,11,2,12,2,13,3,2,3,9,3,10,3,11,3,12,3,13,4,1,4,8,4,9,4,10,4,13,5,1,5,6,5,7,5,8,5,12,5,13,6,1,6,4,6,5,6,6,6,12,7,1,7,2,7,3,7,4,7,12,8,0,8,1,8,2,8,12,9,12,10,11,10,12,11,11,
z,0,2,1,2,2,2,2,13,3,2,3,11,3,12,3,13,4,1,4,9,4,10,4,11,4,12,4,13,5,1,5,7,5,8,5,9,5,13,6,1,6,5,6,6,6,7,6,12,6,13,7,1,7,3,7,4,7,5,7,12,8,0,8,1,8,2,8,3,8,12,9,0,9,1,9,11,9,12,10,11,10,12,11,11,12,11,
z,0,2,1,2,2,2,2,13,3,1,3,2,3,11,3,12,3,13,4,1,4,8,4,9,4,10,4,11,4,12,4,13,5,1,5,6,5,7,5,8,5,9,5,12,5,13,6,1,6,4,6,5,6,6,6,7,6,12,7,0,7,1,7,2,7,3,7,4,7,12,8,0,8,1,8,2,8,11,8,12,9,0,9,11,10,11,11,11,12,10,12,11,
z,0,2,1,2,2,2,2,12,2,13,3,1,3,10,3,11,3,12,3,13,4,1,4,8,4,9,4,10,4,12,4,13,5,1,5,5,5,6,5,7,5,8,5,12,6,0,6,3,6,4,6,5,6,6,6,12,7,0,7,1,7,2,7,3,7,12,8,0,8,1,8,11,8,12,9,11,10,11,11,10,11,11,12,10,
z,0,3,0,4,1,3,2,3,3,2,3,3,3,13,3,14,4,2,4,11,4,12,4,13,4,14,5,2,5,8,5,9,5,10,5,11,5,13,5,14,6,1,6,5,6,6,6,7,6,8,6,13,7,1,7,2,7,3,7,4,7,5,7,6,7,13,8,0,8,1,8,2,8,3,8,12,8,13,9,12,10,12,11,11,11,12,12,11,13,11


#2
BlaineSch

BlaineSch

    Writes binary right handed and hex left handed

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 2,448 posts
I should probably add how it works.

Firstly I generated 36 images. Each image contained 1 character in 21 different angles (link listed above for all the images I used). I used "importLetter.java" to scan the images 1 by 1 and then I compiled it into the file "letters.txt" also listed above. The program basically gets all the black pixels in a x,y list each full letter being a full line.

Next I scan the target image (gifReader.java), it does the same process in finding all the pixels and then compares to ALL of the images I scanned earlier and gives me the most matched result.

The problem is that I am getting a few wrong letters... lots of reasons why that could be happening some may be I have the wrong font file/size or possible a logic error somewhere.

Note: The font I am currently comparing against is 19px Arial

#3
tate

tate

    Learning Programmer

  • Members
  • PipPipPip
  • 90 posts
I believe your problem lies in your scoring system. You need to not only look for high pixel match but also misses. If you keep track of misses on black pixels you can easily cut out errors on n, r, and 3. That may not be a good explanation so here is an example:
Say the captcha letter is 3. when you match it against your stored 3's you are going to get a pretty good match but your stored 8's cover more area thus you are more likely to catch a higher number of correct pixels. If you also count the number of black pixels the stored letters don't match the captcha letter and use the best match(highest score) with the least extra black pixels you will likely increase your accuracy.
twas brillig

#4
BlaineSch

BlaineSch

    Writes binary right handed and hex left handed

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 2,448 posts
I changed the checkLetter() function to return this statement:

double t1 = this.letterCords.size(); //total pixels
//.. more code here
return (totalMatches/t1)*100;

so it gets the total matches divided by total pixels times a hundred that should give a percent right between 0 and 100 and it gives me the same results.

#5
BlaineSch

BlaineSch

    Writes binary right handed and hex left handed

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 2,448 posts
I think I'm saving or importing the "fullAlpha" in wrong but I'll have to check tomorrow.

I made this image:
Posted Image

If you notice the first letter is the captcha 'r'. I made a program to scan all 21 of those letters and then compare them all against the first 'r' and my highest result is an 89.*% which is rather high but when I run the actual program it says my highest match is 'p' with a 25.0% accuracy.

import java.awt.*;

import javax.swing.JOptionPane;

public class testLetter {
    private static letterList[] partAlpha; //not 
    private static int[] imageLocation = {9,164}; //x,y of the image top left
    private static boolean isBlack(Color y) {
        /*
        Just check is the image is mostly black
        */
        if(y.getRed() <= 34 && y.getGreen() <= 34 && y.getBlue() <= 34) {
            return true;
        }
        return false;
    }
    public static void main(String[] args) throws AWTException {
        Robot myBot = new Robot(); //need this to move the mouse and get pixel colors
        
        partAlpha = new letterList[21]; //we did 21 different angles in the images
        
        String letter = JOptionPane.showInputDialog("What letter is this?");
            //the character is also stored so order would not matter
        
        for(int i = 0;i<partAlpha.length;i++) {
            //declares and sets the letter
            partAlpha[i] = new letterList();
            partAlpha[i].setName(letter);
        }
        
        /*
        Will start to find the image pixel by pixel and define it
            (more details in gifReader::splitLetters())
        */
        int totalLetters = -1, spaced = 0;
        for(int ii = 1;ii<661;ii++) {
            myBot.mouseMove(ii+imageLocation[0],imageLocation[1]);
            for(int i = 1;i<45;i++) {
                if(isBlack(myBot.getPixelColor(ii+imageLocation[0],i+imageLocation[1]))) {
                    if(spaced > 5) {
                        totalLetters++;
                    }
                    partAlpha[totalLetters].addPixel(ii, i);
                    spaced = 0;
                }
            }
            spaced++;
        }
        for(int i = 0;i<partAlpha.length;i++) {
            partAlpha[i].decrementAll();
            System.out.println("Completed: "+i+", "+partAlpha[i].checkLetter(partAlpha[0]));
        }
    }
}


#6
tate

tate

    Learning Programmer

  • Members
  • PipPipPip
  • 90 posts
does that percentage only include black pixels. what i meant was something like:
totalBlackPixelsInCaptchaLetter = some number; //not really needed
totalMatchedBlackPixels = some number;
totalBlackPixelsInStoredLetter = some number;
totalMissedBlackPixels = totalBlackPixelsInStoredLetter-totalMatchedBlackPixels;
The letter with the greatest totalMatchedBlackPixels and least totalMissedBlackPixels is the best match.

twas brillig

#7
kmhosny

kmhosny

    Programmer

  • Members
  • PipPipPipPip
  • 133 posts
why dont you first test your "decide letter" code on an image that has only 1 letter, not multiple letters, to see if you extracted information from this image properly
"Recursion is just a line of code"
-Karim Hosny-
My flickr