class byte_array
{
	static int[] array;
		
	public static void add(boolean bit, int pos)
	{
		int n;
		if (bit == true) 
			n = 1;
		else 
			n = 0;
		
		int cell = pos/32;
		pos -= 32*cell;
		
		/*array[cell] |= (n * (int)Math.pow(2, pos));*/
		array[cell] |= (1 << (pos-1));
		/*System.out.println("Cell: "+cell+", position: "+pos+", "+(n*(int)Math.pow(2, pos)));*/
	}
	
	public static int read(int pos)
	{
		int cell = pos/32;
		pos -= 32*cell;
		
		/*if ((array[cell] & (int)Math.pow(2, pos)) != 0)*/
		if ((array[cell] & (1 << (pos-1))) != 0)
			return 1;
		else
			return 0;
	}
	
	byte_array(int size)
	{
		int amount = (size / 4);
		array = new int[amount];
	}
	
	public static void main(String[] arg)
	{
		int size = Integer.parseInt(arg[0]);
		byte_array m = new byte_array(size);

		/*for (int r = 31; r>= -1; r--)*/
		
		m.add(true, -1);
		m.add(true, 0);
			
		System.out.println(array[0]);
		for (int r = 31; r>= -1; r--)
			System.out.print(m.read(r));

		System.out.println();
		for (int r = 0; r <= 32; r++)
			System.out.print(0);
		
		System.out.println();
		
		System.out.println(m.read(-2));
		
		System.out.println(Integer.toBinaryString(array[0]));
		/*m.add(false, 1);
		System.out.println(array[0]);
		for (int r = 31; r>= 0; r--)
			System.out.print(m.read(r));
		
		System.out.println();
		
		array[0] = -2;
		System.out.println(array[0]);
		System.out.println(Integer.toBinaryString(array[0]));
		for (int r = 31; r>= 0; r--)
			System.out.print(m.read(r));

		System.out.println();
		
		array[0] = 2;
		System.out.println(array[0]);
		System.out.println(Integer.toBinaryString(array[0]));
		for (int r = 31; r>= 0; r--)
			System.out.print(m.read(r));

		System.out.println();*/

		/*for (int r = 1; r <= l; r *= 2)
		{
			int bit = (r & l);
			if ((r&l) != 0)
				System.out.print(1);
			else
				System.out.print(0);		
		}
		
		System.out.println();*/
	}
}