0000110110101111010101011101001100001010101100110001100111110111101001011000111110011001011010111011100100111001110000000110001101000010010111101101000010100111010010010011000000010000100011110110000101110010101010011110011010011110101011100111100100011100001111000111000101001101101000110101110010100101101110100100001111001111100011001110001110111011111001110010001010110111011010000111111011010000 1100111011101000111101100010010100111011111100010011001100101001100101011101000000010000001101111010111100100010111111111110001010101011111100011010111110101110011100000100011000000001100011000111110111111010111001100001000111011100000000011101001110101010111101111001111011101101111001011100100101100010111101110100001001111000111101110101010000100111100111100011011101010011010101000001001110001000 1111000111001001100111111110001011001000001010101011000101111001010100110100111011101000001001100110101000100000111010111010000100101010000111010100001010011001010101011011111000001101001100111001001101010110010010011000011001011101010101000101011110011100010000110010001001011010110000101001110101000100111100111000001000110100100100010110000111011110010101011110110111001010001011110010100101011010 0010000001101110110110000010110011000111100011110010110110100100111100001100011010010101111100010110011011000110110101100100001010010010001111010000110010110100100011100111010111100000100100110110110001110101101000101011101100010111000111100010001000111111000001000110011110110010111101001001100001111100000001010100001101110000111001010101010100101011111110001011111001100101110011110011001110010011 0000000011001010111011011101110110101110101101110100111001100001100001110011100001100100000100110011100010011000110001010100111001010110110110000100001011100010011010001010001011010101101010001100010011011111100110000000101100011010100100100100011000101111011101000010111101011111101000101101010100011111010000011000100101111000011100110100001111111101011110110110111001011001011101111000010001100000 1000100100000110011111100011101011110110010010011111010011110100000100101010000110010100100001110110000100001000011011010110100010000000000111111111101100001010101001110011100010000000101001111110010110000110100110110100001011101111011100001011001101100110101000110111110111000000110010110111111000011001000000101100010011001011100101010100111000011100010001000101101011100111010111100111010010010111 1001000000011001000110001000010111001010111111110111101110001110000111010101000100110011101101010100110101010111010100011111100001001100001100001011000000111101000100011001010001101110100111010101010011011001010110010010001001110101000100000111000111000010010000000110110111100101101011011000011011100110111100111010001010101111101111100101011001001001011010001111011000110100101111010101111101111000 1011101000101101001000001000010011010000010010110011011011111011110010001101111010101010100100010000010100000111101001111010111010010000001110111000111101010011101101000010001111100001010001111010110111100001011010100011000010100110101101110100101010000100000010010010110001101011100011001001000111111111001100110001011101110100110001101001110010100101111101001110110101101110010010101010001100010100 0000001011111010111011010010101011110001100100010001100101001011110101001100001001110100100100001001000001100100111010000100000011110010010101111101001101010100010101011010101011010010100100110000110111111010000011001011101010100110101101010001000000100111101011011101011001100011010101000000111110101000011110101100100100010001100010010001011110010110011111001000101011111101100011110011000110000010 1100111010011010100000111001001110101011001101010111101111011110011001111001110010011100010000100111000101001001110001110011111011010100110100001001010111001101100011100011100110110000100100010001110010110010110110000110010001010011010101111011100101001000000010001110010000111110001001110101100001110001001111000101111001111110100011100111111110011001101110000110001011001001100010101110110101000101 1010011101100000110111000001101100110110010010011100110001000000101001011100011011100110010111100101100010110110110111100110100011000101100111011101010011010111011010011100110000001111011111001001000100111101010100010011101010110001111001100001111001000000110011100001100001010111101001110101111000111100011001000010001011110010100010011001111100001000101101011011010010011111000110001000011000010000 1011110100000100000001101000000110110101110100010111101011111101100110111111111010000010101110010001101101100011011000001100101010000011001011110000111101111011101111100110011110100101111110100100011100111100010111101000011100101000101111000100111110100011110111100100101111000000011100000000011000100011011101111011101010001100101000110110001101000010110000010010100100011000001001111010000011010101 0110110111101101100111111110000101001000101000100010001110010111010100100001100111101010011100010000010000001010001010111000100111000101110100011101100000100000100001010110000011001000001011010110011100001000010001000000000011110011101101011100010000101000111100000100110000101100110001000110010110000110100101000101101010110101001100000110110010010110000110001011001011100111111010111101100100001110 0000000110010000011111101010111011000110011100011101111110010011011010111000000001011111011000011010101110100110010011001100111101100011111010111100010000001110010001001100011110110010101110001001111011010101000001110011111010100000001001011101110101001100110110011111101101011111101010100111101101101001111101110110011110101101101101100111101010011110010011111111110011011011100111001101001011110000 0001101011000000110000100100010000100101000011100001010111110011100001101000101100011010101111010011001000110010100110011000111010100110110000011000011000100001100000111110010100001010000000010000101011110001110000001001011101110110111001100001100010000111011010011000010001011101101100010001100110011100110001001010111100001000011100000110101100111000100100010100100000100000111011001100010111100101 1111001000111001111111101110100100100000000001100011111110010101011000101011100110101001110110000100100100001000010000111110101100000110100000001110000111110010101000100111000101101100100111011000001111100010010100011111110111100111111100101010011000101011110000011100111111010011000011111010110000110110011011010011011010111101001010001011010110001110100011011010000011110000000101110000011001010100 0111001001010000111100011111100101100011111101001110101001001101101110010101011111010100000101010000111011010000011010101111111110001110001001100011000110011101001000100011100111011001110001010001100001001001011100100100000110101101110101001100000101111110011011110000101011100101001101000010010100000101110101111101101010011000000010111101000000011000000010010001100010001010010101101111101000010111 1011010010010110111101011110100111101011001101001111010010111000100001000110101110101111011110011001111001011001001010100111100101100110110101001100000110100000010100101000111000111100101011110111011101101110011010011111010100000111100001010000000101111010111010101101100001011011111001000001000100010010010011001001100100110110100100011110110100101111111010001101000011010111101010010101100101010000 0101010111101100100010011111000011011011001010010011100011000110010110010100100010100110010000100010101111000000001011101011000101100110101111101110001000010010111010111100000000100111001101110000110011110011110111111110100110110011110110100110111101001100000111100111011011010000010010011001110111101101100000111110111010000001111010001001100110001111110010110101111111100101011110100000101001000010 0111101101000110011101000101111010001100101110110101101010010001011110011010011001011000110110101011110111001000111100100000101101111011010000001101000110010011000111001001111111000100001111100111100100000010010001010000100101011011100011000100100100011111100110110110001100101001101001101100110111101010101000101101000010101101111000101101111011110110111010000111000101101111001010101100101111101001 0010001000100001010100010111011101000010000110100000000100100000100001001101100111110000111110111010100111000110011010010010001110011010010111111110111111011101100000111010010100010011010111001011011110011100110101100001100001000110001110011110101010110100001110000010111010110001001101010111000000001000001110101110000111111110101110010100000000100100000001011111000100110011100010100000000011010110 0001001100101101101111111101001001010110011000110010010010011011001001001001000011000101111011111011010010100111100100100010001011010101001010011011101001100011010001000100010000111111001010101010110001101000001010111000001101101000011011010001011011100001000000001011001101110100100101010001010010110100010110101101001011111101100111001111011101111100010000111011011101100001010001011000101000111111 0111011011101101000010000110010100101110010001010101101011011010111000111010010011000010011010000010101001110100111000100010100111011001101001000110010111011101100101001100001111111000010010100101001011110001100011100000010010100000110110100111100100111111110101010111111000100110100100111000010000101110100110000111000011001100011111000111011101000111101000001010111100100010001011110101000011101101 0100001111000000100000001101011101000100010110011011110100010111001110001101010110100011000001101011101111100111011110101010011101000011001000110010100100010010000110110001001010000100011001110111010101001000010110000111001000010011011100000110111100010111000100001001010000111010110101100101001010100101000011101000110111000101011100110110110111011001001001011001111100001011111111010111110110000011 0011110011000110110101101011011010110110111110101011001000111100111000111100000100001101001111010001101110010011110011000011011110000001100110101101110011001011101000111110111010011110010000111100001111010111111011100011110010001000010100001110100100000110110000000011100100110110110001010110010010110101011011011110000111000100110001011110100111001111000110001111111101000100100001101100110111000010 1010001010101111010001000101111000100000100010111100010010001010111000010111000110010001111101000100000011011100100000011110111011111111111011010100100101001011011011011100101110101110100110110110100101110101111010110111001001011000101100010011100110100110101010010000100110110000101000101001010001001100100111100111110011011110111100001101111100000110110010111010111101110111011000010011100111010100 1111101100101010111011001011111000000011001101110001110011010111101011111001101000001111100101110101011100111000111101001010110100001010001010001010110001111110101110100111011110110110010000101111110010111100001000000101110111110100100110111001111101010010110100110111011110110101101111000111000100110011101111001101100110011000000001101011000001000110010101101001100111000101011011011101000101001010 0011111110110010110001000101101111001100100001100110000001010101101001101001100111000110110010000101010010111110110010000101110001001000111100100110101100111001110001011101111100101010000001110001100001111101000111100000111011001100101010111010110101010111100101101001010011010011010110101101111000011000000100111000111000101001011000101011111100011001010000101110110011000011001001110111011010111111 1101001001011010000011011000001111000100111111101101100011100101010101110101101100000110001001011100100110111111110000110100011001011011110000100001100000011010011110010000101000001101101000001100000111110011110011001000101110001010000001111010100100011001000111100010100011111011001101001100010001010000000010110111110000011101100110111101001111000110010010100111011011000000111110001000010010110010 0110100101110110010111111000110100000001001110111000011010111100000110011110100011100100110100110000001010000110011001110110000011100110110110001001000111111011111010001001100110101010100001100101110100010111001110010011110000011111100101010100011100111111110110111011100000000101010101001101110000011110001101111100111010011100000000000111011100011100101111100010010010100001101011111010110011011011 1011011111110110001010011111001110100001010101011100110101001110000011001100100010011001011000110111011111001101001101111001001101001100010101011011011110110101100001000111111010010010001001001111111000100000111100001100001100001100111111100111010011111110010000010100111000110011011111000010011010101101001110000111111111100011110001001011011100100110010110011111010111001011001101001010100011010111 1010110011111111100011100111011011011111011011100100000111011101001100100101001101011111110101001010100011011011110010010100001101010100101000111100001110000011000001110101000011101111000111010001010001010101011100111001111011000000010011110000100100111001001001111011001000111010111010001001001100100100001010111000111000100110111100010110101011010001011111001110010001101111111111010110001000001101 1010010010001100000000010010111011111101110110001010100010111001100111010100101111111100101110011100011010111110000100001100010010001011110001110100001101001111100000111001100001010111101101000011000111101011010101001000010111110101011100100000111110101001010011010101001111101101101010100011100101101100101010000101001001110011001011101000101100010001110011000100101100010100010010111101100001111100 0111011100000001111111101100011111010000010010100101100010010011111111111000001110100011101110000111011010111011001110000001001000110100101101001111111010111010000000111011011101010000101000011111011101111111111010111001001000000011011001010110110111101001010011100010110110110100011011110110010101100111000010111101001000110100111010110001000001010110011000110100110010100001010011001100101100011000 1110100001001111101011101001100010001001000101111110100000100000111101011111101111000100110100001100111110100011011101011111100111111011101110001000001101100101100011001101011101010100001100100000110001010110111111010111111110001100111101001111011011010001010000110001000100000010110110101001111000111000010100010100101100101100001110111000000010001010010100110100001001101101011100110000110001000010 0101010100110101010011110100010010110011001011011111111110110100111101000011000100000100111101000100000011111101101111010010000101001111011000000101110111110100110110111110101110101100000001110110100111011100101101000011111001110101100001101111010011100111101110001111000111010000100001100010011011110010110101111110100111001101010111110010001010110011011101100100010000011001110101110011110010111100 0011011101101000101001100110111111101000010110001111110111011100100101011001010010110110000110001001100010010011110000000010010001111110110010100000011011010100001010001010110000011000010010011110001101001100001011011110010011000100100101011010100001000000100110010101001010101110111001001111111000010100010100011110000100110101101101110111010100000011101111001101011100110011011110100100000011111100 0111010010111101000111001100010111100001010001001110110001000001001000111000110010111011111100010100110010101001010010011001100101001000000111110111001101011111001001011011110110101100010001110110100010000001110000101101011111000010010010111011100001111111101010010101000011111001010111000111110110011001001111110000010110100000110000001111011000100011001010000101001011010100101000010000001001011110 0101111101010110001100000101001010111110000001111111000101100000111010010111000101001010100101111010101010111011101111000111111101111010110111101101000010000110001110101001001011001101011101100000110011001000100011100111011111000110010110100011011010100110001101111101001011101101001011000111010101011010101010101011100010010100100111101111011101010110110111111011000001101001101001110111000100111110 0101001110111000100101101001111101101011011010111111010110010000110100001000010100111011100111100111111110111100101101101111000001110110100101101110010000001000011101011001111011011110101100100010001110010010001010111011111101011100110010000110010101011101010100110011011101000100111001000011111001101111111000001000011100100000000110010001001101111101010000000010110001011100110000000001111111001010 1110001101101010111010001000001001011000110010010101111001010000000101000011011011011000111100111110100001101110011111010011100001000000111011110111000011101100101100001001100101000100111001000000010010110111111111001001110011001100011101101111101000101101101110110100111011101100011110000001100100110001101010100010010110110011000110000000111111111010100001010011101100110100100110010010011111101010 1010111101110011001111010111111111000000001000010000111011110010001000011111000101001001010111010011000100101110000101111011100110000011010110111000110010110111100101011111111000100001111000110001100010101101111111101101110100101001100101110010001000100011000011011101000110100010000010110011000000101111100011011110011101101110011001111110001011001000111111010011100101011000101101110101001110110111 1001010110011111011011100001101011100011101001011000011101010110101010101110101010001111110000110010000010001111011010000100111111101110101010010000110100100101001101101100001110001100100000110111001000110110110100010110100111100110010101000110101010110110101011000001001101100100110110000011111110111100000111001000110010000010101100010000100011011000100110111010111111110111110011100010111111001010 1111001110010000010001011010100010100011110001101100000010001101000000011011101111111100011111100000101011101100001101111100001111101000111011101111111001101100101011111111101101100111110101101001010001101000011001011001101111110001110001111100011110101011000001001100101101100101110000010010010010000000010100011100101101000011000100011110110111001101100111000110001011111001111001010011111100011011 0000100010011110101011111001010010111001001110100100101000011110010101000010110100000101001111001101100010010010001100101000110001001100110111010011101111010100011000010011011000010010011101101110011111100101110110001101101110000000000010101011110111001011001011110011011101000101110011111000110100111100011000000100110010010111111000101111011010001001110111001111111101101100000010100011011010000111 0000001010111011110010111001001110110110100111110010100010011001010101001011100010111111100111110101001011101011101011101101000011101110100110100011100011100000011110000001110110111001000010101010100001111001011101111011110010000110010000001110101001001111111010011110100001100001000010111000000000110001000001010000110011011000100111011000001001011101010000001001000111011011010111101100001010010000 1011100100011111111110101001101010010010011011011010100100010010000101010110010001010001000110000000101110010000100111000111100001000100111011111000100011101100110101011000111011101100100010001101111110101101100100110010101110001001010000000101111111110101110100100100010101101100010110010011110011110110100110001110000111101100110000000100001010110111110111011100001111100001001100111011010111101001 1001110010010011010100001110010011001100001010101001101000101001110011101111000110101100010101001010010101101001010011011011010011010110000000000000110101000001001011011111100000100111100101110110110100100010110100100110100010111000111110111010001001000100010001111111000111100101011100111101001111001111110110000101000110010111010100010110110011011110101111111000000011100100010100010011100100011101 1000001010110101100000101111001000000100101111101000101100001000101110100001011111100010101111100000101100001011011110100101111110000000011001111101100001011010001100010111111100010100000010011011010011010111110011000101011011111101010010111110000111111000101011001010100010010100011000111000101111100110111110110001001000100110011101110000010111010111110100111001010110111000011100010111110111010111 1110000010110010111000111000111110101100100100100010000010101000111110000100111010000000111110110010001001111110111111010000101101110111000010001010101000001001110001101011110110111001000100100101111011000010001001111101101001111010000010010100011000011110011011110010000011011101111111110000101011110110001111000111010110010111111011101001101010111111001110000000101100001111111000011010101111001100 1010000001010100010001100011011101000010110011000010101111001110010100100010010101011001000100011100010111101111111011110101110011101010001111110110001011110000101110010000101011111000010011000011001001001000001100000110110011011111111111000011000001011101110100010000001101000110101110011000010110010011110110011010010001101101001100100001110101100010111111110101100111001001111010110011101001101000 0011101000111100010011011100001000000110110100000110111100001100011000010110011011001101000001010000010111001011100010011011011110110101100001011010111011111111001101111100110101111100110001001010110001111111001111110000101111010110010010011111111000011010000001011110010010101010110101010110000001101011110010101000100011001110101010000101011011111000111100111001011101111001011000100000111001111010 0011010100111101110100000110100001000001110110010110101110100000111000011001001010101001101100110010000000010101111111010100011101000001101110111011101000010100001100111001001010000100111110011001111001101001101001110000101110001111011101110010010111100010110101001010010101011011111111100001011001001010001001000110000011111100110111000101011110101011111110001011111010001000101100011000100100010011 1100111001001010100101100111010011100010000001001101010111000001101011001111110010111010100101011110110011101100011110101001100001101110100000101110001001100101010110001101001101110111011111101010111101011100000011001010100100000110011101000010000101100001100101101010010010001110000101110010100101001111110100011011110010001000100011001100010100001101110001010111110010011001101111001010000000010101 1111010101001011010011111010110111011111101000111000101010100001111110001010111100101001011000011100010111101001111101011110001000110011101011000100101110110001101110000001101010110001100000111100110111011001101100010101000001010100011011010001101011000001101101000110011011000101101010010100110100010000101101111100011001101011100101000010001111001011000111110010011100010001110001010100011110000010 0101001100110001111111111101110101101010001100110101100110101011000000110111110100110101110110110110111111011001011010000110011011100001111011111011000000011001111000100010101000100010011000110000110111000011001010101001111111000010010101000011101010110011010111100011011001001011110010010111101110001100001010011111111010011100011010110100010111011000011010011010100000010010011110001000101111011110 0101111110101100101000101110011011100010100100011000010111010111011100101110110101101000010001101000110101111100110000000000010001010100111011111001000000111000111101011011110101010010101001001000010101101111101010001000010000010011101100001100110011110100000111100011110100010010111111011010010111101000100011110100001001100010111010111000001010100010000000100111111110110111110110101011101011111111 0100100110001000100111001001011000100000101011100100000110100001100011101110110111001101100001100111111111100011011001100110000010110100100010101000000000001000100001110101100111011000001010111001001111101111000011010110001101101010100100011101001000101000010001010110101011000110100010010110011101000010111111100110010011100010001101110100111001100001111001000100011010000011100100000000101110110111 1101100011111011000000111111100000010001000001000000000110010111010100110001000110011101010011110001100110100001111001010110110100110111100110010011001000100111000110000101010110110100001110100110110001111110011001011111101001001100010010000000100101010110111011001101000100001110100011000110001111100101010110111111011110110011010001000100000011001001100111100110010001000001110011110111000111010110 0010011000010110110011111010111100010111100101100001111000100011010101010101010000110010011111000010001010111011000001101111110101000100111000101101000000001010100001110000100101101100011101100100110010001110111110101110001001001101010110000000100000111111010100100100010100011111000011101001001110100110010000001010110101100101110001010000001001011001000001110010010100000101001111010001110000110110 0011011011101010011011111111101101000000010111000001110000011110000011110011011110000011110101001110011101110111001010010101111101110001001010010011101011101101001110101011101111001010000010110100101101101000110001101011001011010000101100100100101011100100101110000111000001111101110111001101100010011100011011001010100100001011001110111111110000000000101100001010010001111011101111011110100100000111 1001111000111011010110110111101111001110000100111101001011000100000010000000100001010101101111100001101101011101000101111000101011001101110011111010011101011010110001000100110101110010110010000011010000010110100011100100110100011011101000100100001110111110011000000110011101011011010011111100100011010110110011001001010010111000011000010010001001001110110000111000011000010000100100111100011100111111 0011101111001101101111010101101001101010100010111000101011111001010100011000000100011010100010010100100110011100101110011101000101000111110110000000100111110010011110011111011010000111000101011000001101000010011110100011001101100001011000011010100010101001011011000110110000110110001011100010010001000101100111000110100110011101110110101001010100100001000111000100101101101100001100101010110110001011 1010110010110100011011011011001110011001010000100101111000111101000100110100001110001100101110100110110010100110010000101101000110111100101011010011000110001100010000001111110101101001101110011111110100011101100010011001111111001001001101101111100000001101010111110000110010011010101100000011001001010000000111110111110011110010001111101001000110011011000111110110010011010110101111001010111110001011 0110011111011001101011101101011010001001111110100001010110010011010010101111010010000011011110010110001000111001010000100001000101110001000101110001010001101111101101100111010111001011101111000100101011001010111010111111101011011000111111001110111101011000100110100011011110000100111111100010101100101100101001000001110100111001110010001100110100010111100001111001001011111100011110000010110000000000 1111111100000001111111111101100011111011000000010100000111101101000011110000001000110100101111111000000100101010100011100110001000101110100100010100010000111111000100010001111100100100100011010010001110001111000011011011001110001010100010000010111001011011100000010101011010110111101011101001111000100101101000001100101000101100100111110110111100111011111110100101011111011111100100101000000100000001 0001011010110101110100101110110001110111000001001011111011100001111010110011000000010111111110010010110111110100110111000101000010110011010110010000001001101100101000110001100101100001011110101100010010101101011100011110100011111111001001110000010010101000101000010011001101001000010100010110111001001011100011011000000000001001110111010110110000000111001000111011000111001011001111001011111101100001 0011111010101011000010100011000001011110100001011100010101101000100100111101100010111111010100111101111100111001101101111101010110111101100100111011011011100110011001001100111110110000100010010100000111110101110110000110000100110011111000100011100001000010110111010110000010011001111101111010010010111111000111101101010111000011011110101111011011010010111110110101001000101001101010111000110100001000 0001110101110010100100000100000100101100011010101011110011110110110101101111101111110000111110011000111001001100011100101011100110101101111100001000110110011011110000101000100101111001000000011101011010111111010000111110100100011110101001000100011011100101110000110000000000111101111001001101101100100000111010101111101000111100111001111010000001010101010000001001100001000001110000000100101110111101 0100111010010001001010010100111100001100000011110101101101100010011000010101001001001011000111011001010111100101100111111101011111011100001100101100011111111001101010010110010110000001011011001010011100010111000011010010101100010001010010111111010110011110001001111101101101101111010110011001101010110111010111100011000101101010101111101101101011111000111100001000110011101010111101100010110110010000 0101111011000101000101110010000101101110100101110111101100111100101001100100000000000010101000100000111100111000000100001111001110100010111001111100000110111001110100011101010000110111100101001000101110100111011000101101111100111001001011011000111101001101011111111011100100101100100100111101010110011000011111111100010110110010010110111110110001001000010111011010001100011010010010001111001001111101 1101010100001011001000011010101110011101000110010110010001111011111101011001100010110101100101001110111111110010001100011000010010011001110010101000010011011101101111111010011000101010100011010111001011001010111011001110010110011101011111011101011101001000001001101101111010001011101011000101100111110011001010101001101011100110010101110101101100110100101110100100000011011010001001111110110100010100 0110011101010100101101100001000111000111110111011110011100100111000011111001100000111000010110101111100011010101001101111101110000100101011000100010010101101001011000110011101000011011100111101001010110000001001111111001010001000001001011101010000101001101101101111011010001110100001110101110001111011110101101101011100100010111101100101011100000000000111000110101110111101100111000011000010101101100 1111110001101100000010110100000001010111111000100111001101001011110001100010101101110110101011110001001101110011011101100100000110011100100101001010100010101100010000111101111011011111011011111001101001001111111011110010011000001000111011110000100101010010001110000100011011000111111001110011111010011001010100100011101010110111001011000110100010101111111111111011000000100011010010010101011010100000 0100111100011100100011101011111111011010010101101100101101101101001101110010000011011000101000101011110000100011000001010011001110101111011111011100101110101011011010100111100100001100001001010110010111001110101100110110011101000001000111110101000011010010111001011110010100010000001001101010110001101011110010101111001100010010111100111001101111111000100101000111100001100011111100101110001101111101 1110010110110011101000100000111001010110100111111111001110100000100010010100010100001000010000010111110111110101101101001110111100011111100101000011111111111011111101001110010001011010110111011110111111011110100101101001000100011011001101001100100010111011010110011010010100100001001001101101100101010011100011010101100100101011011000011110001000100110100110101100000011000011010101110010111001010011 0011101011111001101100110001010010100001011010001111000111010110000001101011111111010001010101110010100100100110011101001001000111011001110110111010100111101001111110011001001100001111111001100010110101010110011110110011001111110001001011011000101100110011110010011011101001111001110010010110110000111101101100001001000101111111011000010010101100000010001010001010010100001010111101100011000111010011 1001111010110110101110111010111010011101110101011001000101111001000000101000110110010011111110111010100111000111100000010001001111011110001111010110011010111110011111101011111111111010111000111010101111110100000111111011111011100000101010010000101010100100011110111100101011100101111100000100000001011111100010011001111100001101000011111011111111010011011110011100110101101000000000011111110100011001 1101100111000101011010111011001011010111110111001011000110011110000110100001010010001011110100010111001011101011001010000001000100000001010110011010010111100110110110011011111001111101101001111011001010010111000000001100001101010110000101100001100110111001110010011011100011000000010010110011010011000010010111010001100100100111110010001010000001101110001010100011001100101111001000000011011011101110 1000011000011111111101000110100011100010011000111110101000011101100101111110000000001111100111100101000000110111100111100100000010000011010101000011001101110101010011010010110110111001111100011101110011111001001010100100110100001110111001011011010010111111010100011010001100001011000010101010010100001001001010011011000111110111001000110001101001000110001111010110111001110101000000100010110001010010 1010111100111110010000000001001001011110000111001000101110001110110110111111111011011001011000000110111011110001010111000010010001101001111000010100011101110000000100111100000110100110011000110110010011000001001110101110001100100010101011001110110110011010100101110111011010100101101001001010000111011110011000100000111100111100001010011100000011010001101101011001010100100011100110111010100110000001 1011111100101111001110000000011111111110001011101101010101110011010100110011101010111101111001010010101010101111011010011000111100010000101110111111001101011011101001110010001011110101100111000110000111001101000000111001010001111010101101110101011111111011011010010101000010001011010010111010000010000010000110010000100000011101110111011110100110011101110111011011000011000110001001011111000010001100 1101111100011100011010110001111100101000111011110111100000001110010011001101101000010000100011011001111111001000111101011010101001111000011001000101101110111101110011001010000111001110010101111010101011100001101101110010001111111100100100100001111001100000001110011100000110100001101010000011101000011001110000101001010000011010011000100100110101101001101010010101000001110101100111001011010110000000 1100000100000110111011111011000111000101100101111111100100101110100000101100011101101001111011000001111101110110101100110110101000000001001100100001001001011010111000110111100111111111111100001110111010001011001100000000100100000100111111111011000001001100101011100010110000101010100001111100101100010110111011100111011011000011001111001010000100001101000101001111010000110111111100001011000000011111 0000101011011011011101010101100101011010000001101110101010111100011001000101100001100110001100011010110110101101110110111100110011001011110010110100110110100100101010001010110111111110111111100011100001001010000000011101010011110010000111010011010110010011010011011110001010011011010010011101101000111111010111101011111011110010000000000010111101001000001000010000101001001000111101011111101000010011 1110011101000010000111111011000011010110111100001110101011111011000111011111111100001100001011100000100010000110001010110100110110111100100011100001110110001110000110101000010000110001011001100001110010110110001001100001001101111101010011101100110100010111010001000011110001100110101001101010100010101111010100111011010110010001100000001111100001110110010110001111111110111011001101001011000110101101 1100001011100001111101101101001011100000111111010000001101000100111011000010111010101100110011010000101100001101011011110100100010101111110010110011111111001110000011101011010000011000001101001010100011010001011100001010111100001010100010010011010011011100110100101001110110110000011000010011100001010001111010111001010000110001100001000010001010101000000001000001000110101101001100011001000000010101 0100101000000111000100011111000011011110001001100000000011000011000100011111001001011101001000000101110010011010011000010001001010010000101110001000010011101010010110000011101100010101111011011011011011100111011100111011010111000011101001010010110000001101010010010100010110100001100101100100111000100101000110000111111010111011110000010000101000100110100110001010110111100100010011001111111100101101 0010010010101011100100110001100011110000100001010101101111101100000111001011101001011100010011011000110001111011111101010111111101110100001000001111010110101110101110101000001001011110010110101010110000110001111010001100010111011101101001001000100110001111110001000010011000111010010000000011111101001101100010000101011011001110000101010100101100011001110111111110011110101001110000101000100001100010 1010110011111001110111010011100100111100000000001010101100000110111011100100001110111011000100000001100010000111010000010001101010101000001010011110000101110100010101010110101101110000000001000100001000100010000110110011110000110011001101111101011100011001010110110101011110110110111101111100101111000100100010010001001110001010101000100110101100110010001100011000101000000001000000111100111100111010 0100110000001010010011000010100010111011010110100100010011001000111000000000001100101001010010110111011010001110111110001011010011000000101001110010001110000001000111101000000011101000100101100010001111111010110111100010010111100011001100101110111000001001110101010010011101010000001110111110100100001011100111001111110010110011110011001111010111111010010111001101101100001011111101101011011110101100 1001110111000010110001001010010101101011001000100000010001000100100110001000100011011111001001011000101001010101001000111100001101001111110100110001100001101111111000001110010010110111010001001101101100010011001000010111111000000000000100011000000010001011011100110111111011010001110111000111110011110111110011011111010111100101001100111111011110101011101100111000101100010000100001111110010111100110 1010110110010110000100110100111010110101010110111000010000011001110010111101010000010110110011101100001011010011100101000111001110110010000100011001001001100101001100110100000000010100011101011110110101110111111110010100001111110111011101001000011111001001100011011011110000010010011011100100111010011010011101010010001011000011100000001011111001000000000101010110000000001101100101000010110001011100 1000110001110011110111001000000011101111111101011101101100000001011010110110100100000111011100011011000101001011000001111001100110101000010011010011101100101000101110111110101001000010010100000111010110100110100110101000000111101101011110101011001110101100000011100101111100111000000100001110100111101111000101011010010100111110101011101010100010001011100010101001110001101000011110100111101011100000 1000111101011000011101101101101010010111001101101001001000000100111101000011011110100000100100110110100100101011101001010001010001010000011000000101110000100001001110101100101001111111100000101101100010100011000000100001001010000010101111001001100101001100111010010101100100101010001000110011111010100000101111111101111101001110000011010010001101111011110011101000000000010010101110010001111000101101 1100010100000011000110100010001110111100110000011100111100011110010001100001000100111100010101111000011111111000001011100111000001000101101001110111000011100110011001000111111100111000010011110011100010100111110101000100011101101010001010111101000111001111011100111101101011010011001000101110101001010001000101111010001000001000011110101010110000000110001010001010000111010000110100010110100100000011 0110100110100010000010111000010000111011101010110010100110010110010100110010001011101101010001010110111110000100110111110011010000001001110111011110111010110111111011100110110100111000000110101011011011000001011110000000110001101100100111100010101010010111011011001001000110010111101101000101100000100101110101000110000011010010011010110101101010010000110100010100001111011011000011100100000000110110 1101101000101111000100000100011011001010000100110100001001110001110110101100111000110101110011001101110111010001001101000011011001000100101110100100000011010111111100011110011000100111110000100011011001011011000110101100111100000011110111101100010101010100111000011100000110101001111011010110010000111000001001110110000001110001001001010011101110101010000110001000100000100110100110011010110111000001 0000001100100101111110001100000010100011100110011000010100111000111101000101000110000010010010010100010111000110111101111111011010011110011011110010100010111100011001100101000110001010110000110111001110000111110100100101001000011001110101111000101000101001111001101000101010100111110000011101110001100100011000001000011010000001011000110101100011110110101111111000011001000010111000010111011101010111 1011101010010101000111101010000100100100011110000110010001110000110010000101100011001110010010111111001110001010111001011010011011011110001101000001011101000000100000101110111101011110111001101010111010001100101000101001011100011000101000011001101011100001111001010011101000001101100111100111111100100001111001011111000000101011010011011111110110000011111110101010100000101101000111101111010100011110
cTrader Algoシステムトレード

【cAlgo】ナンピンマーチンcBot【Sample】

4/10/2021 12/18/2023

5年以上前の記事です。内容が古くなっている可能性があります。

悪名高いナンピンマーチン

世の中にはいろいろなロジックのEAやcBotがありますが、ナンピンマーチンほどシステムトレード初心者を魅了し、そして地獄の底に蹴落としてきたロジックはないのではないでしょうか。

(EAやcBot・・・cTrader信者のajinoriとしては全部cBotと呼びたいところですが、一般的な呼び名で総称してEAと呼んでおきます。)

 

ナンピンマーチンとは

説明は不要でしょうが一応簡単に。

ポジションが損失を抱えたら、同じ方向で追加エントリーすることで、平均エントリー価格を下げる「ナンピン」と、負けたら倍掛けして負けを取り返すギャンブル手法「マーチンゲール法」を組み合わせたロジックです。

一般的にはポジションに一定以上の損失が出たらより大きなロットでナンピンして損失の相殺を図るロジック全般を総じてナンピンマーチンと呼ぶことが多いでしょう。

 

なんでダメなのか

一番大きな理由は破産リスクの大きさです。「マーチンゲール法」自体、無限に倍掛けできることを前提とした必勝法のため、ロットが資金的ににエントリーできないくらい膨れ上がった時点で口座破綻を起こします。

破産リスクを小さくするためには最初のエントリーをできるだけ小さくする必要がありますが、その結果リターンが少なくなり、その割にはそこそこの口座破綻可能性を秘めるという、どう頑張ってもハイリスクローリターンの設計になってしまうのです。

 

本当の問題

ハイリスクローリターンであると最初からわかっていれば誰も使うことはなく、ただすたれていくだけの手法のはずです。しかしナンピンマーチンロジックはいまだに人気・・・かどうかはわかりませんが、少なくとも有名です。

ナンピンマーチンの怖さは口座破綻のリスクが感覚的にはわかりにくい、という部分にあるのでしょう。人は小さすぎる確率を0として扱ってしまうんですよね。特にマイナスの事象に関しては。

「さすがに〇回も連続で負けるわけないっしょ!」って。この思考が破滅への道を着々と進んでいくのです。

また、EA開発の視点から言うなら、このロジックを使えば比較的簡単にきれいな右肩上がりのバックテスト結果が出せてしまうんで、EA販売をする人からしたら都合がよかったというのもあるかもしれません。

 

作ってみた

どうしてもナンピンマーチン=ヤベーやつというイメージが強かったため、手を出したことがなかったのですが、今回ブログのネタとして、至極単純なナンピンマーチンcBotを作ってみました。

ソースコードも公開してますので、よかったらなんかの参考にしてください。なるかわからないですけど。

 

何も考えないナンピンマーチンcBot

ロジック

最初に適当にエントリーします。プログラムに「適当に」とか言えないので、とりあえず起動時の最後のローソク足が陽線なら買い、陰線なら売りにしておきます。特に意味はないので別に逆でもいいです。以降、ずっと同じ方向でエントリーを繰り返します。

あとは設定値(Pipsパラメータ)以上損失が出たら倍掛けエントリーします。損失が相殺された時点でナンピンポジションは全決済します。

利確も同じ幅にして利確したら再エントリー、にしようかと思ったのですが、決済直後に再エントリーはさすがにあり得ないので、「最初のポジションは一番いいところで決済して再エントリーした」と仮定して、最初のポジションが一番いいところから設定Pips以上落ちたらナンピンさせるという設定にしました。

・・・説明がわかりにくくてすみません。ロジック気になる方はソースコード読み解いてください。

 

ソースコード

using System.Linq;
using cAlgo.API;
using cAlgo.API.Internals;

namespace cAlgo.Robots {
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class NanMar : Robot {
        [Parameter(DefaultValue = 100.0)]
        public double Pips { get; set; }

        const string LABEL = "NanMar";
        const string COMMENT = "namping";
        TradeType _tradeType;
        Position _basePosition;
        Position _lastPosition = null;
        double _maxPips = 0;

        protected override void OnStart() {
            if (Account.IsLive && RunningMode == RunningMode.RealTime) {
                /* 当cBotはブログ記事用に作成されたサンプルcBotです。
                 * 何の工夫もないナンピンマーチンロジックにより売買を繰り返すため、高確率で口座破綻を引き起こします。
                 * 間違い防止のため、初期状態ではリアル口座で稼働ができないようになっています。
                 * リスクを承知の上、動かしたい場合はこのifブロックを削除の上ビルドしてください。 */
                Print("初期状態ではリアル運用できません。ソースコードを確認してください。");
                Stop();
            }
            // --- 適当に売買方向を決めて発注
            _tradeType = (Bars.LastBar.Close > Bars.LastBar.Open ? TradeType.Buy : TradeType.Sell);
            var res = ExecuteMarketOrder(_tradeType, SymbolName, Symbol.VolumeInUnitsMin, LABEL);
            if (res.IsSuccessful) {
                _basePosition = res.Position;
            } else {
                // --- 発注失敗したら一度止める
                Print(res.Error);
                Stop();
            }
        }

        protected override void OnTick() {
            // --- 初期ポジションの最大獲得Pipsを覚えておく。
            if (_basePosition.Pips > _maxPips) {
                _maxPips = _basePosition.Pips;
            }

            // --- ナンピンしてなくて、初期ポジションが最大Pipsより設定値以上落ちてるか、ナンピンポジションの損失が設定値を超えてたとき
            if ((_lastPosition == null && _maxPips - _basePosition.Pips > Pips) || (_lastPosition != null && _lastPosition.Pips < -1 * Pips)) {
                // --- 前のポジションの2倍ロットでナンピン
                var volume = (_lastPosition != null ? _lastPosition.VolumeInUnits : Symbol.VolumeInUnitsMin) * 2;
                var res = ExecuteMarketOrder(_tradeType, SymbolName, volume, LABEL, null, null, COMMENT);
                if (res.IsSuccessful) {
                    _lastPosition = res.Position;
                } else {
                    Print(res.Error);
                }
            }

            // --- ナンピンポジションが前の損失を相殺できてれば初期ポジションだけ残して全決済
            if (_lastPosition != null && _lastPosition.Pips > Pips) {
                var myPositions = Positions.Where(pos => pos.Label == LABEL && pos.SymbolName == SymbolName && pos.Comment == COMMENT);
                foreach (var pos in myPositions) ClosePositionAsync(pos);//本当はクローズされたか成否確認しないと危険。今回は面倒なので省略。
                _lastPosition = null;
                _maxPips = 0;
            }
        }
    }
}

たったこれだけのコードです。ろくに確認してないので説明と違う動きになってたらごめんなさい(笑)

あ、少しくらいはcBot開発の参考になりそうなこと書いておきます。

ポジションのラベルとコメント

cBotからの注文ではポジションにラベルとコメントがつけられます

あくまで私の使い方ですが、基本的にラベルはMT4のマジックナンバーと同じ感覚で使います。どのcBotから注文されたかわかるようにするため、基本的に一つのcBot内では同じものを使います。

コメントは注文に追加情報をつけておきたいときに使います。cAlgoのメソッドPositions.Findではコメントを指定しての検索はできないのですが、LINQを使えば特定のコメントのポジションだけ抜き出すことは可能です。

このサンプルではナンピンポジションであることをコメントに残し、一括決済時にコメントがついたものだけを取り出してすべて決済しています。

 

ダウンロード

いろいろ改造して試してみたいという方はこちらからどうぞ。

(2023/12/18 更新 古いものはバックテストレポートが出ないようなので、.NET6.0版に差し替えました)

 

バックテスト結果

10年バックテストの結果がこんな感じ。さすがにいい結果とは言えませんが、一応右肩上がりです。

ちなみに最適化一切なしの一発バックテストです。これはEURUSDの結果ですが、どの通貨でやってもだいたい同じような結果が出ます。

よく見ると資金が極大なのがわかるとは思いますが、つまりはそういうことです。100万円程度だとたとえ1000通貨から始めても破綻します。

こんな簡単なコードで、価格も一切見ないでトレードさせるだけなのに、資金さえあれば最適化もなしで右肩上がりのグラフが出るわけです。よく見ればおかしいのはわかるんですけどね。このリターンの少なさとか。

 

最適化してみた

最適化というかPips設定一つ変えただけなんですが、こんな荒いカーブフィッティングでもよさげなグラフができるから面白いですね。

トレード回数も増えて、目立ったドローダウンもうまい具合に隠れて、あとは縦軸の金額さえ目に入らなきゃいい感じです。(笑)

 

ちなみにこんな感じの時々下にスパイクが出てる直線右肩上がりグラフこそ、まさに典型的な損切りなしナンピンマーチンEAの特徴ですので見れば一目でわかります。

(確かMT4だと決済順序に気をつければ下方向スパイクは見えなくできた気がします。見えないとナンピンマーチンか損切りなしグリッド系EAか見分けつかないですが、cTraderなら見えてしまうため明白にわかります。)

間違ってもこんなグラフのEAにひっかからないようにお気を付けください。最近はまともな販売サイトであればナンピンマーチン使ってるかくらいは書いてあるので大丈夫だとは思いますが。

 

まとめ

実際に簡単なナンピンマーチンEA(cBot)を試してみることでその破産リスクの大きさとリターンの少なさを実感することができました。

皆さんもぜひ上記のコードをいじったり、プログラムがわからなければバックテストだけでもいろいろやってみてください。

もちろんこのロジック自体がナンピンマーチンの中でも特に酷いせいはあるのですが、こんなものですらなんとなくよさげなグラフに見えてしまうことを忘れてはなりません。

ロジックを改良して、ちょっとよさげなモノが出来上がったときに、正しくリスクとリターンを評価できるのでしょうか。ナンピンマーチンで一番怖いのはここだと思います。

もちろんナンピンマーチンのすべてを否定するつもりはありません。1回1回の勝率が独立事象のギャンブルでマーチンゲール法使うのに比べたら、FXでナンピンマーチン使う方がよっぽど理にかなっているのも確かです。

人によってはこれに、まともなエントリーロジック、ナンピンの仕掛け方、損切りの仕方など工夫に工夫を重ねて実用的なEAを作ることも可能なのだと思います。

でもそれって、第三者から見た時に中身もわからない状態でまともかどうか判断できるんですかね。少なくともグラフだけでは難しそうですよね。

基本的には「危うきには近寄らず」で敬遠しておく方が無難な気がします。


まだコメントはありません

新しいコメント

コメントは承認後に公開されます。承認まで次のコメントは投稿できません。

cTrader's Life

© 2026 ajinori