Problem: 

Input

The input contains a single integer a (1 ≤ a ≤ 40).

Output

Output a single string.

Examples

Input

2


Output

Adams


Input

8


Output

Van Buren


Input

29


Output

Harding

Solution (in JAVA):

Solution:
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.util.Scanner;


public class A {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		PrintWriter out = new PrintWriter(System.out);
		int N = sc.nextInt();
		int[] array = new int[]{	1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51, 1, 2, 1, 14, 1, 2, 2, 14, 1, 6, 1, 4, 2, 2, 1, 52, 2, 5, 1, 5, 1, 15, 2, 13, 2, 2, 1, 13, 1, 2, 4, 267, 1, 4, 1, 5, 1, 4, 1, 50, 1, 2, 3, 4, 1, 6, 1, 52, 15, 2, 1, 15, 1, 2, 1, 12, 1, 10, 1, 4, 2 };
		System.out.println(array[N-1]);
		
	
		out.close();
	}
	
	
	static class Vector implements Comparable<Vector> {
		double x, y;

		public Vector(double _x, double _y) {
			x = _x;
			y = _y;
		}

		public Vector sub(Vector p) {
			return new Vector(x - p.x, y - p.y);
		}

		public Vector add(Vector p) {
			return new Vector(x + p.x, y + p.y);
		}

		public Vector scale(double s) {
			return new Vector(x * s, y * s);
		}

		public Vector rot(double t) { // Rotate t radians counter-clockwise
			double c = Math.cos(t);
			double s = Math.sin(t);
			return new Vector(x * c - y * s, x * s + y * c);
		}

		public Vector orthoCCW() { // Rotate 90 degrees counter-clockwise
			return new Vector(-y, x);
		}

		public Vector norm() { // Return a vector with same angle and magnitude
								// 1
			return new Vector(x / mag(), y / mag());
		}

		public Vector project(Vector p) { // Return projection of this onto p
			return p.scale(dot(p) / p.dot(p));
		}

		public double dot(Vector p) {
			return x * p.x + y * p.y;
		}

		public double cross(Vector p) {
			return x * p.y - y * p.x;
		}

		public double mag() {
			return Math.sqrt(x * x + y * y);
		}

		public double mag2() {
			return x * x + y * y;
		}

		public double dis(Vector p) {
			return sub(p).mag();
		}

		public double ang() {
			return (Math.atan2(y, x) + 2 * Math.PI) % (2 * Math.PI);
		}

		public double angBetween(Vector p) { // Returns inner angle between two
												// vectors
			double d = Math.abs(ang() - p.ang());
			return Math.min(d, 2 * Math.PI - d);
		}

		public int compareTo(Vector p) {
			if (p.x == x)
				return (int) Math.signum(y - p.y);
			return (int) Math.signum(x - p.x);
		}

		public String toString() {
			return String.format("(%.3f, %.3f)", x, y);
		}
	}

	static class FasterScanner{
		private InputStream stream;
		private byte[] buf = new byte[1024];
		private int curChar;
		private int numChars;
		
		public FasterScanner(){
			stream = System.in;
			//stream = new FileInputStream(new File("dec.in"));

		}
		int read(){
			if(numChars==-1)
				throw new InputMismatchException();
			if(curChar>=numChars){
				curChar = 0;
				try{
					numChars = stream.read(buf);
				} catch (IOException e){
					throw new InputMismatchException();
				}
				if(numChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}
		
		boolean isSpaceChar(int c){
			return c==' '||c=='\n'||c=='\r'||c=='\t'||c==-1;
		}
		boolean isEndline(int c){
			return c=='\n'||c=='\r'||c==-1;
		}
		int nextInt(){
			return Integer.parseInt(next());
		}
		long nextLong(){
			return Long.parseLong(next());
		}
		double nextDouble(){
			return Double.parseDouble(next());
		}
		String next(){
			int c = read();
			while(isSpaceChar(c))
				c=read();
			StringBuilder res = new StringBuilder();
			do{
				res.appendCodePoint(c);
				c=read();
			} while(!isSpaceChar(c));
			return res.toString();
		}
		String nextLine(){
			int c = read();
			while(isEndline(c))
				c=read();
			StringBuilder res = new StringBuilder();
			do{
				res.appendCodePoint(c);
				c = read();
			}while(!isEndline(c));
			return res.toString();
		}
		
	}


}