0001001111010011110001011100000010000100001100011010110010001000010101000010001111111100001011101101110111011111101010101110011001001101000000100101001100000010100001110000100001111100111110000001001110011100011010100011001111110101111111010011010100010010000011011101001010010000110101101111101110111100111110101100010010111011000100101011001101010110001010100110110001101000111011111011110001100110 0111001101111111011110101100110001111001100000111010101100011100101101111000010111011110110110101001011111010111111101110000000011001010010110011000110001100111101000011111010111010110010001110001000111001111000011000010100011000010010100000111100011101000010010010111111100011000000110011011000000110001100000111001110010000011000111011011111110101110110100000011011101001100010101111100000001000100 1010001010100101001011001111101001001000101101001110011100010000001010000010011110010111110110000011111011001111101110000000110011111100100111001111110111110100110001111101010001010001010000110111101100001000100101111101100111010111010011100010101100101000001001001001010000011010110011011101011000101111000111110111111111011100010100110000110001110101110100110100010100101110101100110000111100110110 1011010000100011111001101111001101001111001110100100001100111110101100111100000001010011011100011001111011111010110001111011111001111111010010110110100100111101100111001110101111011101000100000111101000000110100010100111101111010010100000100011100100110001110001011001001000010101110001010000110111100101101000011000010001001110101100101010100110000110010001011100011010011000001010100100111010100110 0011010011110010010111010011000010010010111100010010010100001001011000000000011010101111011111001110101111001101001110100001101100101111100000100101010000000011010010010010110101011001100011111001111100011010011101000110100001001101001000101100000101111100010011011001011001001111010011001001001010010110011110001011100000110111110001100010001111001001010101111111101000100100111111111000111001100111 0001011101000001110000111001011000100111000111101011111001101100000001010101100111001000101001111111100010001100001001110100000111001010110111110100011011000100010100101110000110010001011000111001000111110001011111100011110100111010000010111001100011010100011001110010001011000010110110101100010110000000111101100101011010111110000010100110111111011001001110000010101111111011000001100001001100100101 0101111010001001011100010001101101000000100000100110000110000110011011111101011101000101011011000010000100101100110111011110001011000100111111110000010110101100001010110111011101011110111100110100010010111011011011001011111110101111001011101110111000101001000101101110101000111100111100010011111100101110100011101011111011101000110101111011000110010011111111101101001011001001001100100000010000011110 1011100111001110111011011111010000100010001001011001001101001001001000001111111110101110011101000000101001100000001110001111010110111010111000000100000101001010111100000011000111001111001000110011010010100100011110100000101100001111000101011111100110101111000111111101011011111001101011101011001111101000110010101010001100010001101101000001011011011011101100110100010001101100101100100111010011110010 0101100011000000011010001110100100101100001101100101010010010000111010101000011010101011010010110000011010101110000101011001101011110011001000101011101000010011111000110101000001001100011100001000110001100011011111001011010011111011010101011111100111110010000001001111011100011001100110100011011010100011010011000111011110011101101001000101010000011010101111100000000100000010111100001011010010100011 0110010110111011111111001101110000101100100011101001100110111010010011110010010100101111000110110101101111111000110101111000101010010010011010000001100010001100111010110001010100011111011111000111001111101000011101011010001110101011110010111100000110011000010011111001110000001110111000110000111100000111110101000001011100011100100110111000011010111001001011101101010110100100001100110100111101101100 1111000010010010110001001111100100110001111110111101101111000011110001010011101000001110011011111010000001010111011000100101100001001010000011100100110111100100100010110101111010011100010000001101001101110100000111001001000101011001000101101011111100011100101010111010001101111011110010100001000011110100001111000000001010011000110100111100100110110011001111010011100110001110110011000011110101111101 1100100101010100000000111110111110100000101010001111101110001000011100111001000110001110111011010000100011110010001110101110110011001000110011110100011101011111010000100100000010100111100011101111010011111001000001010011101000000111011100000100100011001101110110111011011111011000101000010100011110111011000111011110010110000010011011110001100101010011000011011110101011001100000110011000011101101111 1001001011101100000010001011010000101100101011111100010011111101101000100100001110111110100101111001111101101010010010011011101100101110001100010110110000011111110111001000111111110010100110001001110001001111000010111010101010111100010111011000101000010001000100111010000011100110101100100011111001101001100000111010001001111110000111000011100010011100010011010101110100111110011100010110100000100111 0100111110011100000101010100100001111100001000011001111101111101100100111110011010100010000100011010001000100001000001011001010010010011011000011011001110010110011110001000101111100000110111101010001110110001111111100111101000011111110000111101111100111001100010110001001111101111101010010000011101111110101111110101010000100100000000011110010110110101010111110000100010000110100001001000101001100100 1110110011100001101000010101101000110101100110110100010000111110101100011001001011001010011010111100000101100011100010010110010010111010101111111011101111110111110011100010001101110011010010100000000001001000101011011000011000011111000100111100111100011101100001100010101010100100011111010110000101101111111011110011111110100001001110101011011100011000111011100010011000011001111011010100110011010010 0110101011001000010001001001101011111001000001101110111110111101111110111100100011000110010000010010011010001001111010011001101110000000001100010010011011001001010110010110011110110110111010100110101110110101010001001011010111101001001110100110110001010110100001111100101011011001010001100101010011110010001101101010110000100111000111001000010010011100001110011100111110111001100110101010101101011010 0010010001101011100111111010010100001110101010010100110101111110111000110110111100111100010011100110001000000110100100010110110101001011111001101011100001100110001001010010000111101101000110001111001101000011101001000100100101000110101110011111011011001110111001101100011101000110110110111110010011010011011110000110110010101000110100110101001101101100001101111000111011000011100010100110001101010000 0000011010011001100011001011011000100000010001000000111010010011110111111001001000000000100011100110001010011100110110110100110100101100110111100111101110001101010100010100000100001010101110010100110011001001000011111111001011000010101000011011000101011001101010001101110101011011001111001110111001001100011011100111001101011011000111000011101111001100111101010000101100111100011101101010011111011100 0011101001110001101011111001110011000010010110110111001011110101110110111001100110011001011010000101110001001111110010001000011000011111110101000010100110101000001011101101001101101111011001101101010011001001001101100110010011101111000111011011011001001110001100011101010000101111000011010111100111110111001101000001000001100110001100101010110010010110110010001101001010001100100001011111101101100101 1111110010111000011110101000010110110110110111110011101100111011101111011101001010001000001001000010110010110101011000110100100100010001000000001110001101000100111001000110100000001011110100000100111110101000010000011000110001010110101111111111100010100100111010000110110010001100011011100100111110100001000001110100000000000110000001011111101001000101111001111010001111101100111010011111011110010110 1001100101111101111100011010100000010111110110001101110001100111010001001001101000010101000110001010111100111100100000011011100010110001010000101100001110011010001000010001010001111100100111011100001111011000000000000011011101000011011011101101000010110111011101100001011001000111010111110100010111010110000010001111011000000111101100111101011100111000001111100101101010101010001110010100010001110110 1100010011111110100101111010100000001110110011111011010001100010101000010011101011101111110000110000110110011110000111110000011001000000101001101101101100001101111111000100011101001101101011111011010101000100010100111101100101000000000011001011000011100110001100100100111010000100111110101011010010111111000010101001101001001010100011111100000111111100111011100110101111001101101011010100101010010111 0110000011011010101011111001010011101100001101110010100011001101010011110001111010001111110110000100100110011110111100101101110100010111001110001010110000000101100011101101010111100010101001101001001101100100001101001001100100010001010001001111000011100110011110100000101110101001001010010001011010010110110000101101001101110011101000000000000010000101111111001001101110001010010000000011110101111001 1010111100111100010101111001110100010010010010011001011011111010111000111010110101010011010111000100010001100110100001011101111001101101101001001010111100101001001100100100110110010110101100111011000000101110010111101100010101011111001101001011111101000110011011000011100111100101101111110010010000001111100111011010001001100011001100010001111110110100110101111110100011001110000000110001000011110010 0100000101000011110100001010110000110111010010001011010011011001101100111010100011000100010101101011110011011101000110100101100111110011100010110001100111010100101100000011011010101001000101000101111111001001000010111110110111011000100111000110110110110100011111010010000001101001101110111001001100000000111101001111000111110001110111010111110111011111010111010001101001010111111000001111110011101011 0001101101111110111011000100111100100101111011001010001111110000101100000100011101111000101011101111001011111011101000010110010111010010001001001101111000011011101111110100110110101100111111101010101010110010110001101000101001111101101010100100110001011001000010100101100111011011110111100011000001010101110110110010110010100100010101000011101110010100100111000111111011101111010101000011101011010000 0001110111000101010011111010111010000110111100101101101001110111011101001010000010111101010000111111000111110100110110001001101111100100111010111101010001100010100111100110000000111100110100111001100001001101100001010000110001011001011100100101000001001010001111101011001011111101111001000100010111110101000110000001101110101101011010001010001000000100000110101011101101010110110011001111001100101010 1011111100011110001100000010010110111111000000101100111010001011110011011110000001111010101010111100001010001111110101111100010000010001000001010111111001011011100100101001100001111011111100100000101000000000100001111110111110100000010101111100111011000100001011111011101110101100001010110110101001110111011001010111010100001000100000100101001100111000110111001111001010011111100111101100010110011011 0010001110011000010101000110010010000001110010111100111100111111101101011110101100100110000010100001101001001110100010110011110100000100000110110010010011010111110110101110110111101101101110000101101110111110100000100001110101111111011010011100101001010011001001000000000010000010101011101010101111101000110111010001010111000001011011001001010001101101000111011010110100100101010000110111001111100101 0110000110000101101101010101111011101101000110000010010000111110000100111000010101011010101011100000111010101010100111011110111100101001110011001110100000011010010100000101010111010100011101111001100010111010011010010110101110100000100111011011101001001010010010001111011101111100110101011010010001111011011000000001101001101001101111111111111000110010101111011010101110011110000110100001100011000101 1001011010000110101000111010011100101100011001000000000110111001001000000010011010111110001000000010100101101100001110110101110011011000000111100110111100111000101101001011110100011101101110011000111000111010011100111010110101010111111111001100101011100010111100101110100101110010110110101001011000100110101011101101011111110000010011100010101011001011000101110001010111101001011001110101000000000110 0111111111111001101001110011110111000111000001010001101110101110011101101111011011000101110011010101011101011111010001100000000000110011100100101011001010110011010100110000100111101010110010110010001011010010010010110111011011100101101111100110011101001110010010000101001011011101100010110110111000111100101010101111110101001001010100011100000000101011011110100011110101111010010010101010100010100010 1110011111101001001100001110000000011001101111000011001000011011101011000101110011100111000010111011101010110111001010010010000001101000100001000010111101100110110100100110101101000111001001011010001101110001100110100000000000111100100110101011111001101000111011110000010000010010111101010101101101110010110011011111110100110101111000100010011011110101011000100110011001001111011100000000010011010100 0011001000111110001010011001000000100000000001101111101001101010100101100101111000111111100001011011001110010111011110110000001001100101110111011000110110011000110001001001001101100011101010111011101011101000001111001010001000000100000100010100100101101101000010011100001101100110111000011111100111011100110101111111000100110010001100100000001001111101100110110001111100000000011000111010111100101111 1011110101000001000010100100001000110101101011100111010110101111111010011101010001001011010011110000110000001001000000000011001101110110010110111100100010101011000111110100010001101101010011011000100110001100001000111100000111001111111111100000101100011101010011100100110011100011110001110110110100101011100000110010000010100010000011001110110001010111001011011110010101101111001011011000001001011111 0010111011100011101111110000110111000101111010100010010001111110011110100000110111101010001010000001110110001101000100100011101101001010011101011001110010111011101010011101010101100000111111011100110001001101011111000011010001000100011100101101111110010001000010010110100110000001001001100000100100010110111010010110100110111010001111000100110111011000101100000001000100111100010010000111011011111001 0100100011100111110001100100110110100000010100101011011100111001101011011000101100000100010000010110100100010100011100100010011011101111111111000110111101010100101101010011101100010100000001110010011000011000101011100101000010111110001100100011000011001101101100000001011100100101101010110101010000110111000110111111000000011110110001011001110101100010010100111100001111001001100101010110101010101110 0000001000011100101100111111111100001010110111101110010001000101000001110101011110111011101000100100010011100001100111101010110101110111101000000101000101010000000010001100001011110001100110010111101000100101100111010001100000010111010101111100101111010011011011101111101101001010010001011101001101111100100110001110110000111001001110111011101000010111100001001100001111100000001110110000011100000011 1001001101110110111101110010000101001000000110110110101111111000111111010001110010110110110111101110010010111010111001111010101000011010111111101000010110010100001011110011011010101011011011000111101100101100101001101001100111101000000110110001010000110101111000111100001101111000011000010001001100111011100110110111010110011001001010001101110100101001110011101010000101111111100000101011111001000001 1001010001011001001001010001010111010101011001010100011100110111110101101010010110011101111010100111000010110111000111001000100000101001111011111111011001110111001011100111001100111110111110001100011100001101000011101010001001111100011101001011101110101110000000011101001010000111011100110000110010010011100001111010110010001101101100101111101111000010011100001100110001111010110011001011100011101101 0110111100011101111111000001111110100010010011001101101010111101011001101011101100101100100000010000001011111000100010010011011101000010101111110010110111010101000011010100011001100101001011101111001000001000011100011001011011100111100010111000001111111111010010000110000000110101100111010011100010100101001001000100011110101000110001001011100010010111000111110000010010000001010000111001100010110011 1111100111111000100111111111000111011110101100100010001000001101010010111001010101010100100111101100100100011001001110101101000000000110011101111100010011101010100110110000111001101010101100000101111110100000110000001110001111011101011100110111100101110001110011001001101110010010101000101000110100011001011010110110101001110011111001000001011011001010101110011000100100010010000011111011100001100011 1001111101110100100010011010010101011001000010101000011100010111101111111111000010111011111000111111010101100000010101111000011110011010001001100110011101111101011000110000001010010111100001001110111010001101001111000000110010010001000111101100011011010111011001110010001000111100000011001001001100001010111001000111101100001010110111010010110000100001110001111000110100111101001010100110010001010000 0010000111111101000100110110101101000101101100011001111101110101110011111111111001110011101000011000100100001001000100001101111010101000101110101100011011101001000010010101100100000011000110011011011110011011111000011110111110101011110010010000100001100010111001100101110010101111001111111011010101000110101110010100100001011100110100011101101011000100001000000111110110010111100011000011001000110011 0101111010111010111001100111000011110000100111011001001111111001000101110100001000010001100100011011010011110010111101110110000000110101010100100010101110010100100011001011010000000110111010001001100011111110010111011111000010111100100010010001010011000111110001011010000000101010110011000110100000111010001010010011101100101000000001011010000111000001101110111111110001010000010110010001010101110111 0111010000010000011100100111100110101001101001010111100011011000000001100111010010000010101111000111111101011000110100010100111111110000010011110100100000110000011110111011110000101001101101110001100110100000011100010111111100101111110010011000110000010000010010100000111111001010101001010111100001000001101101111100111111000100111111000000111101101101011000011011101100101111000100110011011010000010 0010111010110011110001100101110000100111111110011001110010010011101001001100101001001111010010011110110001111001110111100101001100001001100100010110100000011111110110001110101100000111010100100001010110011110101000100010110110001110101011110101001000010100110101101011111101000110010010000011001100110100000010110000100000100000000100001011001110001001010010000000110000100101011000010000001100110111 1011010000001100101110110010100100110011111110100000001110001111110111011100010000001110010001010011100100000110111011001011011000010011100111000011111010001101110110010000001000001111101111100000001001000001010000100110101100000101000101111110101011001100101110111011010101100011111001101101000011001000110100110001101011011001001111100111111010100011111001010001101010100101000000100001010011010101 0010000000101000101010111001010001101101110011010000101110000010001101101000011010101011011001010000100101110010001111010001111100000001100000101001100100111001001000001011000100001010101001111011111010011000001101011100111101000101111111111100001111110000110010011101001011000000001111101001011101000000110011101101000010000000010110100000011011110111001001110000010001000000010111001101011000010010 1100010000111010010111001110100001100001101000110101101100101000111011011101110010010011001010110000101000101110011100101110110000110111111011111100011110101101101010001000000011011001111101110110110110110001011010010100000001110100001001100110101000000101000010101100000000100111101110011001000010110000000110001001011101110110011001001010101010000100001101110000011101001000001101111100111101011011 0101100001000111010101000000111100011000000100010100010010001010010010010001100011001000100001111101101110111011010010100000000111000110100010101100111100111110111101110001000011001011100000101110011111110100000110010010000101101010010011011101111001100110010000110101110101011010011000111011100110110001111100110010110110010111010000111000110001011010110001000011100110111010111011000101110001110101 1100101100000101001001110100010100111111000110000010100010100010111000101001011111001010101011110110100011100110111011101100011110011100000000101010111011000100101000111010110011011101010011000110000111000001101110111100011011011000011010101000101011111010110110110011101010110101101101101101100000100110100101011001011111111010101100000011001011011011110000010011001011011111000000101000100101111000 0100001111110110110010011011011111101011111000101100111111010010000010000100100100100100011011010010101100111001110101100001011101010000000110101001100011100010110101010101100110010101011101011111001101010101001011101111000100110100100011000110000111101100100101111111110001001011011111000001001001111100001111001110011100001011110110110010010110001110000001101010000010111100000100100011001101011101 1111011100011000100011011100100110100010010101010101000000110001111110010110110010011110001110101101010011011100110011011001100111111011000110111100100000010001111101001011100101100001011010010110011100001001010100010111110000011110000110110001010100100010110110111110011010110110111100001111000001100100100110001110001100101000100001001011001101101000101010101001111100101101010101101001100001010011 0101000000100000100111111110010001100000101101000100100110100110011100100011110011101100111000010000000100111001111010000000011011111111110100010101001000011101101101111111011010001000111111000010001001100010001010010100111001010100110100000110110101000011110001100110111011100001100000100111100001111111001001110100001111110010011101100101100110101011011100101100111100100010110111000000110100101010 0001000001110100010100100001100111001100000011111100111001001101111011010001110111011000010010101110010011111101001001000000101101011000011000101101100011010010110101010011100101100100100011101000111100000101011101110100001000000011100010001110010111010101010111000000101110011110000011011110011111101011110011111011001010100100001111000010101111011001100010001001010100111111100111001100101001000011 0011100101011101001110100011101010000110100010001101100011000001001101100001111010110111101000000101011110111100001111001110111011010001100001011010010000110100100111001100100100010001011100110011111001010110111010110100011000010011000011000110110100010001001001010110011000011001100101111000100111001100100111110111101100001000001101001000000011001010001010010110110111111111100001011110000110111110 0001111101011001011001000110010100001001110100111001001101100110110101000000101000110010000110111010000011011101011001000000101000010010110001010100100000000101011100100010111000011011011001000010000011001111111001010011010010101011111001111011100001111001010101111010011111101000101001110101110000010000100111101001101000010111110100001110101010011110011001110100011100110100100100111011011001000010 1111001010111011001011110011100011000100000010111000111111001011000011100100001110001011001010101100110101110100111101110000001001010111110110111010010110110000111001110110000110011000010110000011101111111011100110111011010000110101001110000100010111100001000011100101000010011101101101001010110000010100010001100010110100100110100110111110011000101100100100111001110110110100000011011011101101011000 0001000001010101101011110100010101010000010001001000001000100101111001100010100011110110010111110011100111010101001001010011000111000000011100101000101110000101111100100111111001101001010101001000111110011111100111100000001011101111001010100001100000001010010100000001011011110010000000110011001010110011010101100110000001011011110100110101101110101100110001110110010101110000011101110100010111010000 1001001011000011110011011010011101100000011100110101101011111010001111111001110100011001010010010000101011110010001110010111100111010101101010100010100101111110101111000010011000010110011011010100011010111110110011011101000110010011100110110101100110110100101110011101110001110000110111100010101000110001001110101001111111010101011110010110010000011001010011101010110100100100111111110011010000100010 0011000100110001000101110011111011100011111100100111000010011110101000010110101001010001000110001001001000010101010111110001001101110101001100100000111101101111101110100100100010001000000000000110001000110101100000010101111000100100010011100000000011010011001000011111100011000100101110101011101111010010101111011111000111100100100010111011010111100111001010001110011011101111100011001010001111011010 0011010000100001110111111000110010000100101100011100011101010100100010011001000001110011010110010111100010010011111100100011001011101110110011110001011101110110111000101001011000110100000010011001111110000100100101100001100011111010000000101011101000011001011101100100001100001010111001101000001100100101100111111111111001101111001110001011011111111000101011100100100101010100101001000110001100100101 1100001111111110100110101100110011100010000101100110101100001100001000000100111001111100110110001011001110011111101010110011001010110101011111100110011100101010001111100101000000100001010110100011001111100110111001010111010111100011111100000001010010011111101011001011010010111101111110011100011010000011110111001111101110110001011011110110111111000100100111011111000111010001100111000011000011000110 1000011100111000000000111110111101111011011110011000110000001001110011011011101100110011110001101101101001100010000001101011000001001101010001000000110011100100100010110111001111010110001100101100111010110111111100100011100000000011010000101000110100100101111000111000110101000100011110001111101111010000110111110110101011100000000101011111101110111101100101101101111101000011010100011111101110110011 0101010111000100001011001100100100101000001001011010001110111010001001111111011000010110100010000101010101100011001011000111100010010111111100110000001011001000110100100110100101011110000010000101010010100011100000001100100010000111010000110001010110010010000100111110110110000001011100001100001001110100110001000101100010010000010010001110010110010010101110101101110010001100010010111000001011100101 1001101100001000001001110101101011000001001011100001001111011111100111111010011101000010010001011011000100110111100110001001110111001011111001111110111100000110101011011110100110111111101011000110100100101001001101111011111110110011011011010011100110001110100101001111000110011011000011101011100001111110110011000011011111011111010000100001010101110100010110001011100111011000111001011010101101001110 1011011100110010101101110110100010100111011001011011010101101111011110110000000101100100100110101010101000100111000100011010110000000101101100000110011011001011010011110111100110011011000011110100111011110111110100010001111101110101101100101010000010010001010110110001010000011000011010100011110000001000100000010100111100101101110101010101110001111001011001101011001011010110000100101010111111110010 0101101111011001011001011010011110001010001100010100001011100110111010111100101011000010101100110011011000101110111001110111011110100111101111100111010101101000011111110101010010110100011110001101110000101011111000000101011101010100101110111100110000110100100000011110111110001001100111000010000100010001100000110110101110110010101010110101101010101100110111000000101100001100111000100001000001111100 0011010010101101001011100000011101100110101111100100010001110011111011111110110001000101001100000111110101100000010010001100111011000100010101001111000011001001001110001010100000110000001111101000000010101010100111010001010101011010101100101010110001101111110111010001101000001111010010000100111001011011000110001000100001000100010111001100010111110110110011000000001100000001110000000000101011011101 0010010110000010111101101110111001001111010001001001011001101010001011001011001001110111110011000101110001100100000101100100110111011000111110100010110100111010101110001000011000001001001101000111010101001110010000010011001110110111101000110111000111100001011111110011111111100100011010011111010010010011011010110101100101110110011111011100110111000000110101100000101010101001010001101011011001011111 0100100001010101001100101100111110101111010101010111110010011000010111110010001001011000010010001110111001010010111110111011011011111000010110010101010000010001011111000000111111001000101011011111101010111111100110010110101111011011111101111010000001110011010010110011101000110100001101111101101010100011001010100010001010111001011101010011100111011010101111101100111010011000110000111100111010011111 1011001110110100000000000111101100011111011101000101000000101011011011111010111000000000111011101001010011110000011011001000100110010000001011010001001100010001111011011100110110111010111011101110110101100010000100111100011010110001110100001010110000011100110011110011010011010101010101000110100000010010110010111001101111011110100001011011111111010000101011111111101111100101000000000011011001011000 1000011011010000101110000001101111111100101100000110101001100011000010101101000010110101110000110110111111110011101100100000110011111011010111111101100011001000110111100010010010111111011100110111111000000000000000011001100111110000111001110110001110111111101101000001110000110011011000111010110011001111001010011011110000111011000001111101110101001110001010110110010110000010010100001000111101100100 0110010011110100111001111011101000101010011111111000100011111000001001001010000000010000101001111101010110000011001001110111100110011110010110100000111001011001101011001011100101110010110011100100001001111011010101101011011011110111110001011111101010101101111011001110111100001101110010001111000011111101000001011011110110101100000010101110000101011110000000101101111110101001101010101000100010001101 1000101100100011110011010100101110010101110000010110000111110111011010101111011110100000101111100000011110011011100000000111001000101100010011000010001101100000011010011110101110101111000110100111010010001001010111110110001110001001000001101101110111011001001001010101110010110101100110011000101110100100010010101001110101110001101011111000100010111010000001100000101010000011111010111010011110000111 1010000011010111000001000100000111111000000010111011111011010100100010100001110001010110000001011100111100011101001101100000001001011110111100110000001110000000010000000100000000001110100101110001101110001100001001011010101111111100100011100100100000010000011000000101101000101001010100110111010101110111101000000001110010110111111000100101001101110100000011001001010000100011110101000001101011001100 0000111110011011001110000111011010110010111100110001101111010100101011011011111001111110010011001011101110110111001011100100001001110000001100001000110000101010010100011111001100010001100111000001001000100100011001010010111100010011100100010111001010100101001010011100111010110000001111001111101110101011110100110011011011101000000111100111000111000111100101011001001100011011000110001010101001010011 1111001100100010110001111101101000110000011000110000000000110110001011100111100111100000101001101001110010110100111111010111011111010110100111000010000101100100111111110111101101110111101011000001010101111001101001111101011100010010100011100000010010011111101011101111011011010001011101001111000100011010111100100110111100100000100001001111100100100010010011010000100000110011011100011101111111011011 1111000000101111110101110111001011101000000001000001110111001011101010110100110110111011010100101110100110001111101100010011001011111111010001001111111001000111111100011100111110110001011100001110110010110011110110111010100010100100100100011101011100000001111111111010101000110000110000101000111011111111100111011011001110101000110010000101001001101111010000110010010001011011000011001111001011000000 0100101101011111110111001101010111101100100011110101011011010110010001110010101111010010011001111011101100011100011001101000100010110010011011000111001110111110000011011010101100010001010011100011000010010110100111110101111011110100111001111001000101101000010010010001101010110011000010011010001001101111010111001100010010101101010101011010001111011110101001010010100101100010000011111011011110001001 1010110011010100001001110010000100000011111111100011110001100100101101100100100111000011010100001000100111011111010001010000000001111000010001011000110011101101001101100110010000000111000111110101110010110100000011001010001000101111001000001111001100011000100111010111111011110001100101010111001010000000111101000101010001011101001001111100111101101111001111010000000001001000100010000100110111110001 1111011000011111000010011010000010111001111111110110011010010011111001101010001000001011111000110111011001000000000110000111000010100010010100111011001011111001110010111010010101111101110100101110011010101101001001011001111001000110010010101001100101111001001000100010001001011100010000001101110111101110001011111101100101111001111010110111100111101110011100011010011100101111101110110010110011110001 1110101010101010111000000100110110010110110010000101101100111110010101111001001011111101011100101110111010010011011101000110110011101111001111011000001010101111011110010100010010001101001111110111010101101111010111110101110001010010111100001111011111101001111010001001111010000110100111000100000011001001000010111110101110000010010010000011101100000100011111001100000111111010011100111001010111100111 1101011010110110110010110111111100011111100111111111000101100001010111011101001100000011111011101000010101011001010010001110111110111000011110001010111000010110011011110010000001100010000010010011110101101100011110011001001011010101110100000100010101101001111010010010100001001000011001101100100111111011100000011010001001110111001100101101010111010011010110110011110010010100011100111111101001100111 0111101010011010011101000000001000001001100001100010100001011010011100001101001110001011100111011111011100101110110101101010110101101111100111101010011011010110001101000100100111000000000000110101010100110100110110100110000111000000100110010001111100000011011100100011110100001010101110100111001111010110110100110100000100110000011100110111001011111101001110001011110110000001011010100011110110010111 0010010100110000110011110000111110110000110111000011111000000111001111010001110010100011010001111111100101010000101011000110110101011110001010100000011111001111110001011110011111001001000111011000001110001000010101110001110000101110011011100101000100110011110110010010001011000101010000110100000000000010110000011000010111011011011010111111001000000000000110001010011010111111010010111100010011010011 1010011110101110111000110001110010101110001000001011010000111100100100100010100100000001011001111011111011101011100010010001100001100110001010111000111100001000011110010010101011010001110101111011010100000000100110010101011011100000011011111101011011010010011001101111101101000001001010101000010100100111101011100000100101101101110100001101110001011000001000101100101110001001010010100000100101011100 1111010101000000011010001101110101010010100011011010001111100101110011011011101000100101111011101010111111101100000000110111111101011101010100000111110001001000101011000101001010110000011110101101100000000111010101100000010000011011010001000011110111110111100011010001010010111010100100000111100101111001110000100100011011111110011000011000100010010000011110100100001010110101110000011101100100110100 1001011000100011011111100101011100000111010100110011011010111000000101110110111111010010000111101001010001110110011110110000000100110000110111001110111110001110100111111110110011101011011001010011101100110011001100111011111101101101010100100111001001110011001000000010011001000110101111101000010111100100000100100011000001001000000110010001111101101010001010111111000011110100110000101001010000001111 1101011111110101101011101000011011000010101110100100100101000110000001110001011110100101000100011010000100111000010001100000010010010101001100100001100010010010100101001111100100110100101001110010101110110001111101110011101001111100111111111111100111010000111101111100001001100010000101001001001110101111000101100011111010101001101100101001010101000111100111010110000110100001111101101100100000101010 0111111111110011111101100000110110100011000001110010100000010010100111100010010111010110101100010011001100001001100101001110000110000010001000010001000011001000101011011001000011011011100000010111111101011110111011010000001010001010100100010011111101101101110011010011000101101010101101000011011100100010100011100110100000110101101101001011001000101010111101101011001010111010000000000001111111000100 0000111000001101111111110010001010101011101110000001010001110010011111100010101000000110100010100011010100111001101111001001111000111100000110111010110111000111111111111011001011011010101101001000101011000101000110110111011100100100001100011011111100110011110111011010101010000101110101101110101011011000100001101110110100111100111101001010001011011010111110101000011100111100001110111011111011110001 0001101111001111101100101100110100100010101101000001001011111100101011100101101101010101101000101110110011011011100010111111011011000111011110011111001100111110100000011010001001101110010110010101100011100111100011100111010010010100000101010010001101111011011001101101100001001110111000111011111011011001101010110010011001111101001110010111101101011101101111001011110010010110110101111101000111100000 0101101010000011101111010011001101000100011000100110010011100100001111011000111000001110010101010110100101100101111010100101011000010001011111101011111001111110101000111111100100001100011000001010110100000001100001010001111101111011100001010111111000010101010111010101111111101100000111000001111001100100001011101110111001100001001110001111111101010111010011000011111111110101101011111101101111011010 1000110111111011001110000001011010101000111110011001000111000011110001100101001001111101000100000001101001110000001110011000110011010010010101101111110101111100001110100101010100110101100011000110001100110010000000111111100100010101011101001100001001111000001101011101011101111110001110110100111010110101111110101011110110100000110000100110111000001111010011000010100010100001110101101001010011100101 0011001000011000100011110110000001100010000101101001100000001111111000100101100011101001011100110101000111100000100110010011111111110010100010111001100101011110010011110011001101010111100001101111010000100101011010010110111111100011101001111101000101010111111000011100111010000110000000011100100111001000011011110000101000010101010011000011100010011101010100100111010110001000011001110010111110001101 1001001111000101001101110101010000110110000111110100010001000101000010001000000011111010110010110011110010100010001000000110101111001111010100100111001000000100010010001100110101110011101011110101010110110101110110011000110001011011101101000010111110010110000100101110011111110011010110110111100010110001110100100000000101001100010000100110110001001010101001100101001100111000011010011111010000001110 1110100010111000000101011001010010111001011100000010111011011101100011111010001101010100001011111111110010111011101001001101111100000101110000110100110011000001101100100000011001010101100010100011110101101100101100111010000111010001101111101110100101001100111001011011111001001101000111100101110011100011000011010101001001101010011010101110111110011000101101010000100111000001010111101101001011111011 0010000010010111101101111000001111010011011000000110111100111010001011000110111001101001100011110000100101001101110101110001010001111110111110010000011101011100111100101100110011101010001001111111011100011000100111111010111001001101100111111100000000010111011110000111000100100010010110001010111011001110010011000001000010001000010010001011101100010001010100111001111110001110011011011001110000000101
cTrader Algo

Symbol【cAlgo API】

10/27/2020 1/28/2023

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

通貨ペア情報取得用

Robotクラス(本体)が持つプロパティSymbolから様々な通貨ペアの情報が取得できます。SymbolのインターフェースはSymbolInfoインターフェースを継承しています。

 

SymbolInfoインターフェース

通貨ペアの基本情報を参照するためのインターフェースです。

public interface SymbolInfo

関連するインターフェース:Symbol

 

プロパティ
(string) Name

通貨ペアの名前を取得します。”EURUSD”とか。これをそのまま発注などに使用します。

(int) Digits

価格の小数点以下の桁数を取得します。

(double) PipSize

1pipあたりの価格を取得します。

(double) PipValue

1pipあたりの価格を口座通貨額に換算して取得します。

(double) TickSize

値動きの最小幅を取得します。

(double) TickValue

値動きの最小幅を口座通貨額に換算して取得します。

(double) VolumeInUnitsMax

最大発注通貨量を取得します。

(double) VolumeInUnitsMin

最小発注通貨量を取得します。

(double) VolumeInUnitsStep

発注通貨量の最小増減幅を取得します。

(IReadOnlyList<LeverageTier>) DynamicLeverage

通貨ペアの通貨量別のレバレッジを取得します。

(double) LotSize

1ロット当たりの通貨量を取得します。

(MarketHours) MarketHours

マーケットが開いてる時間を取得します。FXだけなら気にしなくていいです。

(string) Description

通貨の説明を取得します。EURUSDなら”Euro vs US Dollar”とかになります。

(long) Id

IDを取得します。使いません。

 

(以下はcTrader4.5で追加)

(double) Commission

トレード時の片道手数料を取得します。(単位はCommisionType次第)

(SymbolCommissionType)  CommissionType

手数料タイプを取得します。

(double) SwapLong

買いポジション保有時のスワップ金額を取得します。

(double) SwapShort

売りポジション保有時のスワップ金額を取得します。

(DayOfWeek?) Swap3DaysRollOver

スワップ3倍付の曜日を取得します。

(double) MinStopLossDistance

最小のストップロス距離を取得します。(MT4で「ストップレベル」と呼ばれてるやつです)

(double) MinTakeProfitDistance

最小のテイクプロフィット距離を取得します。

(SymbolMinDistanceType) MinDistanceType

上記Min~Disanceの単位を取得します。PipsもしくはPercentageを返します。

(Asset) BaseAsset

通貨ペアのベース通貨を取得します。(EURUSDならEURの部分)

(Asset) QuoteAsset

通貨ペアの決済通貨を取得します。(EURUSDならUSDの部分)

(double) MinCommission

最低手数料を取得します。単位はMinCommissionAssetによります。

(SymbolMinCommissionType) MinCommissionType

最低手数料の単位を取得します。AssetもしくはQuoteAssetを返します。Assetなら単位は口座通貨、QuoteAssetなら単位は決済通貨(EURGBPならポンド)になります。

(bool) IsTradingEnable

通貨ペアがトレード可能かどうかを取得します。

(SymbolTradingMode) TradingMode

通貨ペアのトレードモードを返します。FullAccess(トレード可能)か、CloseOnly(決済のみ可能)か、DisabledWithPendingOrderExecution(待機注文のみ執行可能)か、FullyDisabled(トレード不可)のいずれかを返します。

(int) GracePeriod

スワップフリー口座でポジションを取得してから手数料がかからない日数を取得します。

(double) AdministrativeCharge

スワップフリー口座でポジション維持にかかる手数料を取得します。

(DayOfWeek?) AdministrativeCharge3DaysRollOver

スワップフリー口座でポジション維持にかかる手数料が3倍になる曜日を取得します。

(double)PnLConversionFeeRate

Gets the symbol profit and loss conversion fee rate… だそうです。(意味わからん)

 

 

 

メソッド
(double) NormalizeVolumeInUnits(double volume[, RoundingMode roundingMode])

volumeを発注可能な量に調整して返します。例えばvolumeに12345を渡すと、(VolumeInUnitsStepが1000なら)12000が返ってきます。最低でもVolumeInUnitsMinが返りますので0やマイナスの値渡しても大丈夫です。

逆に言えばVolume計算値がマイナスだったときは発注しないような想定のプログラムだった場合でもこのメソッド通したら発注できてしまうので注意が必要です。defaultはToNearest。

(double) QuantityToVolumeInUnits(double quantity)

ロット数を通貨量に変換します。quantitiy*LotSizeが返ってきます。

(double) VolumeInUnitsToQuantity(double volume)

通貨量をロット数に変換します。volume/LotSizeが返ってきます。

(double) GetEstimatedMargin(TradeType tradeType, double volume)

(cTrader4.5以降) トレード方向と数量から必要証拠金料を取得します。 

(double) AmountRisked(double volume, double stopLossInPIps)

(cTrader4.6以降) 指定ボリュームで指定Pipsにストップを置く場合の損失額を返します。当然決済時の為替レートによっても変わるため、あくまで目安です。

 

LeverageTierインターフェース

SymbolInfoDynamicLeverageの要素です。発注量によって異なる最大レバレッジを参照します。

public interface LeverageTier

 

プロパティ
(double) Leverage

最大レバレッジを取得します。

(double)Volume

Leverageが有効な最大通貨量を取得します。(DynamicLeverageの最後の要素だけ扱いが違うかも?)

 

サンプルコード
Print("この口座の最大レバレッジは{0}倍", Account.PreciseLeverage);
Print("最大発注数は{0}通貨", Symbol.VolumeInUnitsMax);
Print("{0}の通貨量別レバレッジ", SymbolName);
foreach (var lt in Symbol.DynamicLeverage) {
    var lots = Symbol.VolumeInUnitsToQuantity(lt.Volume);
    if (lt != Symbol.DynamicLeverage.Last()) {
        Print("{0:#,0}通貨({1:#,0}Lots)までは最大レバレッジ{2}倍", lt.Volume, lots, lt.Leverage);
    } else {
        Print("{0:#,0}通貨({1:#,0}Lots)以上は最大レバレッジ{2}倍?", lt.Volume, lots, lt.Leverage);

    }
}

実行してみると最大レバレッジが表示されます。

 

 

Symbolインターフェース

通貨ペアの基本情報に加え、BidやAskなどリアルタイムの情報を参照するためのインターフェースです。

public interface Symbol : SymbolInfo

SymbolInfoから継承されており、リアルタイムの情報を参照するためのメンバが追加されています。

 

プロパティ
(double) Ask

Ask値 (買う場合の価格) を取得します。

(double) Bid

Bid値 (売る場合の価格) を取得します。

(double) Spread

スプレッド (AskとBidの差) を取得します。Pipsじゃなく純粋な価格差です。

(double) UnrealizedGrossProfit

保有中ポジションの総利益を取得します。

(double) UnrealizedNetProfit

保有中ポジションのスワップ、手数料を加味した総利益を取得します。

 

SymbolInfoのプロパティ

Name、Digits、PipSize、PipValue、VolumeInUnitsMax、VolumeInUnitsMinなど。上記参照。

 

メソッド
SymbolInfoのメソッド

NormalizeVolumeInUnits、QuantityToVolumeInUnits、VolumeInUnitsToQuantity。

 

サンプルコード

Pips関連の計算にSymbol.PipSizeはとにかくよく使います。利益額や損失額の計算となるとSymbol.PipValueも結構使います。

// 1本前のローソク足の高値をストップロスに指定して売り発注
// 最大損失が10,000円以内におさまるようエントリーボリュームを調整する

// 最大損失とストップロスPipsを設定
double maxLoss = 10000;
var stopLossPips = Math.Round((Bars.Last(1).High - Bid)/Symbol.PipSize, 1);
var spreadPips = Symbol.Spread / Symbol.PipSize;

// stopLossPipsがスプレッド以下だったらなにもせず止める
if (stopLossPips < spreadPips) Stop();

// volumeを計算する
var volume = maxLoss / (Symbol.PipValue * (stopLossPips + spreadPips));
Print("maxLoss={0}, pipvalue={1}, losspips={2}", maxLoss, Symbol.PipValue, stopLossPips);
Print(volume);
volume = Symbol.NormalizeVolumeInUnits(volume, RoundingMode.Down);

//発注
ExecuteMarketOrder(TradeType.Sell, SymbolName, volume, "SymbolSampleCode", stopLossPips, null);

デモ口座で試してみてください。手数料分はずれますが、ストップロス位置で最大損失くらいになるようエントリーされるのが確認できると思います。

 

 

RoundingMode列挙型

Symbol.NormalizeVolumeInUnitsでの計算方式を表す列挙型です。

 

ToNearest 近い値。奇数丸めっぽいです。2500も3500も3000になります。
Down 切り捨て。NormalizeVolumeInUnits(volume, RoundingMode.Down) の結果は指定したvolumeよりも小さい数値になります。
Up 切り上げ。NormalizeVolumeInUnits(volume, RoundingMode.Up) の結果はvolumeよりも大きい数値になります。

 

 

SymbolCommissionType列挙型

手数料の計算方式を表す列挙型です。

UsdPerMillionVolume 100万通貨(USD)あたりで計算され、単位はUSDです。
UsdPerOneLot 1ロットあたり計算され単位はUSDです。
PercentageOfTradingVolume トレード総量の比率(%)で計算されます。
QuoteCurrencyPerOneLot 1ロットあたりで計算され、単位は決済通貨です。

たとえばUSDCADでCommisionが10、CommisionTypeが”UsdPerMillionVolume”の場合、100万ドルの取引あたり10ドルの手数料ということなので、1lot(10万通貨)トレードしたときの手数料は片道1ドルということになります。

少しわかりにくいですが、GBPUSDで同じ値だった場合は手数料は1lot片道1ポンドになります。(10万通貨=10万ポンド=約12万ドル=手数料は(100万ドルあたり10ドルなので)約1.2ドル=手数料は1ポンド)


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

新しいコメント

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

cTrader's Life

© 2026 ajinori