1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
half-reif-benchmarks/data/mznc2019/code-generator/mips_gobmk.patterns.autohelperpat1114.dzn

119 lines
153 KiB
MiniZinc

MAXF = 2147483646;
MAXO = 122;
MAXP = 435;
MAXT = 210;
MAXI = 20;
MAXC = 166;
MAXR = 642;
optimize_cycles = true;
bb_ops = [0..71, 72..100, 101..122];
bb_operands = [0..224, 225..359, 360..435];
bb_temps = [0..106, 107..172, 173..210];
bb_subsumed = [5..5, 5..5, 2..2 union 5..5];
bb_frequency = [3, 2, 3];
bb_maxcycle = [166, 50, 55];
bb_optional_min = [8, 0, 1];
bb_order = [1, 2, 3];
op_operands = array1d(0..122, [0..23, {}, {}, 24..25, 26..27, 28..29, 30..31, 32..33, 34..35, 36..37, 38..39, 40..41, 42..43, 44..45, 46..47, 48..49, 50..51, 52..53, 54..55, 56..57, 58..59, 60..61, 62..63, 64..65, 66..67, 68..70, 71..72, 73..74, 75..76, 77..78, 79..80, 81..82, 83..84, 85..86, 87..88, 89..91, 92..93, 94..95, 96..97, 98..99, 100..101, 102..103, 104..105, 106..107, 108..109, 110..112, 113..114, 115..116, 117..117, 118..119, 120..121, 122..122, 123..124, 125..126, 127..128, 129..130, 131..132, 133..133, 134..159, 160..178, 179..180, 181..182, 183..184, 185..186, 187..188, 189..190, 191..192, 193..194, 195..196, 197..198, 199..200, 201..224, 225..247, 248..249, 250..251, 252..253, 254..255, 256..257, 258..259, 260..260, 261..262, 263..264, 265..266, 267..268, 269..270, 271..272, 273..273, 274..275, 276..277, 278..279, 280..281, 282..282, 283..307, 308..326, 327..328, 329..330, 331..333, 334..335, 336..337, 338..339, 340..359, 360..379, 380..381, 382..383, 384..385, 386..387, 388..389, 390..391, 392..393, 394..395, 396..397, 398..399, 400..401, 402..403, 404..405, 406..407, 408..409, 410..411, 412..413, 414..415, {}, 416..416, 417..435]);
op_instructions = array1d(0..122, [2..2, 3..3, 0..0 union 4..4, 0..0 union 5..6, 0..0 union 5..6, 0..0 union 5..6, 0..0 union 5..6, 0..0 union 5..6, 0..0 union 6..6, 0..0 union 6..6, 0..0 union 6..6, 0..0 union 6..6, 0..0 union 6..6, 0..0 union 6..6, 0..0 union 6..6, 0..0 union 6..6, 0..0 union 7..7, 0..0 union 7..7, 0..0 union 7..7, 0..0 union 7..7, 0..0 union 7..7, 0..0 union 7..7, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 9..9, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 10..10, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 11..11, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 9..9, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 11..11, 0..0 union 5..6, 12..12, 0..0 union 5..6, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 9..9, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 13..13, 0..0 union 5..5 union 8..8, 11..11, 14..14, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 15..15, 2..2, 1..1, 0..0 union 5..6, 12..12, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 16..16, 2..2, 2..2, 0..0 union 5..6, 0..0 union 5..6, 0..0 union 5..6, 0..0 union 5..6, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 13..13, 0..0 union 5..5 union 8..8, 11..11, 12..12, 0..0 union 5..6, 12..12, 0..0 union 5..6, 14..14, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 15..15, 2..2, 1..1, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 17..17, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 0..0 union 5..5 union 8..8, 2..2, 2..2, 0..0 union 5..6, 0..0 union 5..6, 0..0 union 5..5 union 8..8, 0..0 union 8..8, 0..0 union 8..8, 0..0 union 8..8, 0..0 union 8..8, 0..0 union 8..8, 0..0 union 8..8, 0..0 union 8..8, 0..0 union 8..8, 0..0 union 18..18, 0..0 union 18..18, 0..0 union 18..18, 0..0 union 18..18, 0..0 union 18..18, 0..0 union 18..18, 0..0 union 5..5 union 8..8, 0..0 union 19..19, 20..20, 2..2]);
op_type = array1d(0..122, [4, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 0, 14, 14, 0, 14, 14, 14, 0, 14, 14, 0, 14, 0, 14, 14, 14, 14, 0, 14, 14, 0, 14, 0, 0, 14, 14, 14, 14, 14, 2, 13, 6, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 1, 5, 4, 14, 14, 14, 14, 14, 14, 0, 14, 0, 0, 14, 0, 14, 0, 14, 14, 14, 14, 2, 13, 6, 14, 14, 0, 14, 14, 14, 5, 4, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 1, 5]);
op_mand = array1d(0..122, [true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, true, false, false, true, false, false, false, true, false, false, true, false, true, false, false, false, false, true, false, false, true, false, true, true, false, false, false, false, false, true, true, true, false, true, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, true, false, true, true, false, true, false, true, false, false, false, false, true, true, true, false, false, true, false, false, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true]);
atom_regs = array1d(-1..17, [{}, 0..642, 0..31, 0..31, 1..1, 24..24, 30..30, 32..32, 33..64, 33..64, 33..33 union 35..35 union 37..37 union 39..39 union 41..41 union 43..43 union 45..45 union 47..47 union 49..49 union 51..51 union 53..53 union 55..55 union 57..57 union 59..59 union 61..61 union 63..63, 33..33 union 35..35 union 37..37 union 39..39 union 41..41 union 43..43 union 45..45 union 47..47 union 49..49 union 51..51 union 53..53 union 55..55 union 57..57 union 59..59 union 61..61 union 63..63, 33..33, 65..65, 66..66, 67..354, 67..67 union 69..69 union 71..71 union 73..73 union 75..75 union 77..77 union 79..79 union 81..81 union 83..83 union 85..85 union 87..87 union 89..89 union 91..91 union 93..93 union 95..95 union 97..97 union 99..99 union 101..101 union 103..103 union 105..105 union 107..107 union 109..109 union 111..111 union 113..113 union 115..115 union 117..117 union 119..119 union 121..121 union 123..123 union 125..125 union 127..127 union 129..129 union 131..131 union 133..133 union 135..135 union 137..137 union 139..139 union 141..141 union 143..143 union 145..145 union 147..147 union 149..149 union 151..151 union 153..153 union 155..155 union 157..157 union 159..159 union 161..161 union 163..163 union 165..165 union 167..167 union 169..169 union 171..171 union 173..173 union 175..175 union 177..177 union 179..179 union 181..181 union 183..183 union 185..185 union 187..187 union 189..189 union 191..191 union 193..193 union 195..195 union 197..197 union 199..199 union 201..201 union 203..203 union 205..205 union 207..207 union 209..209 union 211..211 union 213..213 union 215..215 union 217..217 union 219..219 union 221..221 union 223..223 union 225..225 union 227..227 union 229..229 union 231..231 union 233..233 union 235..235 union 237..237 union 239..239 union 241..241 union 243..243 union 245..245 union 247..247 union 249..249 union 251..251 union 253..253 union 255..255 union 257..257 union 259..259 union 261..261 union 263..263 union 265..265 union 267..267 union 269..269 union 271..271 union 273..273 union 275..275 union 277..277 union 279..279 union 281..281 union 283..283 union 285..285 union 287..287 union 289..289 union 291..291 union 293..293 union 295..295 union 297..297 union 299..299 union 301..301 union 303..303 union 305..305 union 307..307 union 309..309 union 311..311 union 313..313 union 315..315 union 317..317 union 319..319 union 321..321 union 323..323 union 325..325 union 327..327 union 329..329 union 331..331 union 333..333 union 335..335 union 337..337 union 339..339 union 341..341 union 343..343 union 345..345 union 347..347 union 349..349 union 351..351 union 353..353, 355..642, 355..355 union 357..357 union 359..359 union 361..361 union 363..363 union 365..365 union 367..367 union 369..369 union 371..371 union 373..373 union 375..375 union 377..377 union 379..379 union 381..381 union 383..383 union 385..385 union 387..387 union 389..389 union 391..391 union 393..393 union 395..395 union 397..397 union 399..399 union 401..401 union 403..403 union 405..405 union 407..407 union 409..409 union 411..411 union 413..413 union 415..415 union 417..417 union 419..419 union 421..421 union 423..423 union 425..425 union 427..427 union 429..429 union 431..431 union 433..433 union 435..435 union 437..437 union 439..439 union 441..441 union 443..443 union 445..445 union 447..447 union 449..449 union 451..451 union 453..453 union 455..455 union 457..457 union 459..459 union 461..461 union 463..463 union 465..465 union 467..467 union 469..469 union 471..471 union 473..473 union 475..475 union 477..477 union 479..479 union 481..481 union 483..483 union 485..485 union 487..487 union 489..489 union 491..491 union 493..493 union 495..495 union 497..497 union 499..499 union 501..501 union 503..503 union 505..505 union 507..507 union 509..509 union 511..511 union 513..513 union 515..515 union 517..517 union 519..519 union 521..521 union 523..523 union 525..525 union 527..527 union 529..529 union 531..531 union 533..533 union 535..535 union 537..537 union 539..539 union 541..541 union 543..543 union 545..545 union 547..547 union 549..549 union 551..551 union 553..553 union 555..555 union 557..557 union 559..559 union 561..561 union 563..563 union 565..565 union 567..567 union 569..569 union 571..571 union 573..573 union 575..575 union 577..577 union 579..579 union 581..581 union 583..583 union 585..585 union 587..587 union 589..589 union 591..591 union 593..593 union 595..595 union 597..597 union 599..599 union 601..601 union 603..603 union 605..605 union 607..607 union 609..609 union 611..611 union 613..613 union 615..615 union 617..617 union 619..619 union 621..621 union 623..623 union 625..625 union 627..627 union 629..629 union 631..631 union 633..633 union 635..635 union 637..637 union 639..639 union 641..641]);
calleesaved = 16..23 union 53..64;
callersaved = 1..15 union 24..25 union 28..28 union 30..52;
infinite = 67..642;
range = [0..642, 0..31, 1..15, 24..25, 30..31, 32..32, 33..64, 33..52, 65..65, 66..66, 67..354, 355..642];
bounded = [false, false, false, false, false, false, false, false, false, false, false, false];
res_cap = [2, 1, 1, 1, 1];
res_con = array2d(1..5, 0..20, [0, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
res_dur = array2d(1..5, 0..20, [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, 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, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]);
res_off = array2d(1..5, 0..20, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
congr = [19..19 union 100..100 union 181..181 union 200..200 union 217..217 union 241..241 union 265..265 union 269..269 union 331..331 union 354..354 union 375..375 union 432..432, 20..20 union 218..218 union 242..242 union 355..355 union 376..376 union 433..433, 21..21 union 219..219 union 243..243 union 356..356 union 377..377 union 434..434, 22..22 union 220..220 union 244..244 union 357..357 union 378..378 union 435..435, 121..121 union 133..133, 122..122 union 139..139, 141..141 union 160..160, 142..142 union 161..161, 143..143 union 162..162, 144..144 union 163..163, 145..145 union 164..164, 146..146 union 165..165, 147..147 union 166..166, 148..148 union 167..167, 149..149 union 168..168, 150..150 union 169..169, 151..151 union 170..170, 152..152 union 171..171, 153..153 union 172..172, 154..154 union 173..173, 155..155 union 174..174, 156..156 union 175..175, 157..157 union 176..176, 158..158 union 177..177, 159..159 union 178..178, 201..201 union 225..225, 202..202 union 226..226, 203..203 union 227..227 union 340..340 union 361..361, 204..204 union 228..228 union 341..341 union 362..362, 205..205 union 229..229 union 342..342 union 363..363, 206..206 union 230..230 union 343..343 union 364..364, 207..207 union 231..231 union 344..344 union 365..365, 208..208 union 232..232 union 345..345 union 366..366, 209..209 union 233..233 union 346..346 union 367..367, 210..210 union 234..234 union 347..347 union 368..368, 211..211 union 235..235 union 348..348 union 369..369, 212..212 union 236..236 union 349..349 union 370..370, 213..213 union 237..237 union 350..350 union 371..371, 214..214 union 238..238 union 351..351 union 372..372, 215..215 union 239..239 union 352..352 union 373..373, 216..216 union 240..240 union 353..353 union 374..374, 221..221 union 245..245 union 358..358 union 379..379, 222..222 union 246..246, 223..223 union 247..247, 224..224 union 359..360, 264..264 union 282..282, 273..273 union 287..287, 289..289 union 308..308, 290..290 union 309..309, 291..291 union 310..310, 292..292 union 311..311, 293..293 union 312..312, 294..294 union 313..313, 295..295 union 314..314, 296..296 union 315..315, 297..297 union 316..316, 298..298 union 317..317, 299..299 union 318..318, 300..300 union 319..319, 301..301 union 320..320, 302..302 union 321..321, 303..303 union 322..322, 304..304 union 323..323, 305..305 union 324..324, 306..306 union 325..325, 307..307 union 326..326];
strictly_congr = [0..0 union 134..134 union 143..143 union 162..162 union 283..283 union 291..291 union 310..310, 1..1 union 135..135 union 144..144 union 163..163 union 284..284 union 292..292 union 311..311, 2..2 union 136..136 union 145..145 union 164..164 union 285..285 union 293..293 union 312..312, 3..3 union 121..121 union 133..133 union 264..264 union 282..282, 4..4 union 140..140 union 288..288 union 417..417, 5..5 union 418..418, 6..6 union 419..419, 7..7 union 420..420, 8..8 union 421..421, 9..9 union 422..422, 10..10 union 423..423, 11..11 union 424..424, 12..12 union 425..425, 13..13 union 426..426, 14..14 union 427..427, 15..15 union 428..428, 16..16 union 429..429, 17..17 union 430..430, 18..18 union 431..431, 19..19 union 100..100 union 181..181 union 200..200 union 217..217 union 241..241 union 265..265 union 269..269 union 331..331 union 354..354 union 375..375 union 432..432, 20..20 union 218..218 union 242..242 union 355..355 union 376..376 union 433..433, 21..21 union 219..219 union 243..243 union 356..356 union 377..377 union 434..434, 22..22 union 220..220 union 244..244 union 357..357 union 378..378 union 435..435, 23..23 union 122..122 union 139..139 union 273..273 union 287..287, 137..137 union 146..146 union 165..165 union 286..286 union 294..294 union 313..313, 138..138 union 156..156 union 175..175 union 304..304 union 323..323, 141..141 union 160..160 union 289..289 union 308..308, 142..142 union 161..161 union 290..290 union 309..309, 147..147 union 166..166 union 295..295 union 314..314, 148..148 union 167..167 union 296..296 union 315..315, 149..149 union 168..168 union 297..297 union 316..316, 150..150 union 169..169 union 298..298 union 317..317, 151..151 union 170..170 union 299..299 union 318..318, 152..152 union 171..171 union 300..300 union 319..319, 153..153 union 172..172 union 301..301 union 320..320, 154..154 union 173..173 union 302..302 union 321..321, 155..155 union 174..174 union 303..303 union 322..322, 157..157 union 176..176 union 305..305 union 324..324, 158..158 union 177..177 union 306..306 union 325..325, 159..159 union 178..178 union 307..307 union 326..326, 201..201 union 225..225, 202..202 union 226..226, 203..203 union 227..227 union 340..340 union 361..361, 204..204 union 228..228 union 341..341 union 362..362, 205..205 union 229..229 union 342..342 union 363..363, 206..206 union 230..230 union 343..343 union 364..364, 207..207 union 231..231 union 344..344 union 365..365, 208..208 union 232..232 union 345..345 union 366..366, 209..209 union 233..233 union 346..346 union 367..367, 210..210 union 234..234 union 347..347 union 368..368, 211..211 union 235..235 union 348..348 union 369..369, 212..212 union 236..236 union 349..349 union 370..370, 213..213 union 237..237 union 350..350 union 371..371, 214..214 union 238..238 union 351..351 union 372..372, 215..215 union 239..239 union 352..352 union 373..373, 216..216 union 240..240 union 353..353 union 374..374, 221..221 union 245..245 union 358..358 union 379..379, 222..222 union 246..246, 223..223 union 247..247, 224..224 union 359..360];
preassign_operand = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 122, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 273, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435];
preassign_reg = [4, 5, 6, 25, 2, 16, 17, 18, 19, 20, 21, 22, 23, 53, 55, 57, 59, 61, 63, 0, 26, 27, 29, 31, 31, 25, 4, 5, 6, 7, 28, 31, 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 24, 28, 30, 32, 33, 31, 25, 4, 5, 6, 7, 31, 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 24, 28, 30, 32, 33, 2, 16, 17, 18, 19, 20, 21, 22, 23, 53, 55, 57, 59, 61, 63, 0, 26, 27, 29];
aligned_def = [];
aligned_use = [];
aligned_defi = [];
aligned_usei = [];
aligned_dist = [];
adj_from = [201, 202, 203, 203, 204, 204, 205, 205, 206, 206, 207, 207, 208, 208, 209, 209, 210, 210, 211, 211, 212, 212, 213, 213, 214, 214, 215, 215, 216, 216, 217, 217, 218, 218, 219, 219, 220, 220, 221, 221, 222, 223, 224, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359];
adj_to = [225, 226, 227, 361, 228, 362, 229, 363, 230, 364, 231, 365, 232, 366, 233, 367, 234, 368, 235, 369, 236, 370, 237, 371, 238, 372, 239, 373, 240, 374, 241, 375, 242, 376, 243, 377, 244, 378, 245, 379, 246, 247, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 360];
quasi_adj_from = [];
quasi_adj_to = [];
long_latency_index = array2d(1..24, 1..4, [241..241 union 375..375, {}, 217..217 union 354..354, {}, 242..242 union 376..376, {}, 218..218 union 355..355, {}, 243..243 union 377..377, {}, 219..219 union 356..356, {}, 244..244 union 378..378, {}, 220..220 union 357..357, {}, 225..225, {}, 201..201, 1..1 union 4..4 union 7..7, 226..226, {}, 202..202, 5..5 union 8..8, 227..227 union 361..361, {}, 203..203 union 340..340, {}, 228..228 union 362..362, {}, 204..204 union 341..341, {}, 229..229 union 363..363, {}, 205..205 union 342..342, {}, 230..230 union 364..364, {}, 206..206 union 343..343, {}, 231..231 union 365..365, {}, 207..207 union 344..344, {}, 232..232 union 366..366, {}, 208..208 union 345..345, {}, 233..233 union 367..367, {}, 209..209 union 346..346, {}, 234..234 union 368..368, {}, 210..210 union 347..347, {}, 235..235 union 369..369, {}, 211..211 union 348..348, {}, 236..236 union 370..370, {}, 212..212 union 349..349, {}, 237..237 union 371..371, {}, 213..213 union 350..350, {}, 238..238 union 372..372, {}, 214..214 union 351..351, {}, 239..239 union 373..373, {}, 215..215 union 352..352, {}, 240..240 union 374..374, {}, 216..216 union 353..353, {}, 245..245 union 379..379, 31..31, 221..221 union 358..358, 9..9 union 13..13 union 31..31, 246..246, {}, 222..222, 0..0 union 3..3 union 6..6 union 10..10, 247..247, {}, 223..223, 2..2 union 11..11, 360..360, 30..30, 224..224 union 359..359, 12..12 union 14..14]);
long_latency_def = array1d(0..31, [80, 107, 116, 119, 126, 128, 130, 188, 190, 192, 194, 196, 198, 337, 339, 387, 389, 391, 393, 395, 397, 399, 401, 403, 405, 407, 409, 411, 413, 415, 360, 245]);
long_latency_use = array1d(0..31, [222, 201, 223, 222, 201, 202, 222, 201, 202, 221, 222, 223, 224, 358, 359, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 417, 417, 358]);
operand_definer = array1d(0..435, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 45, 46, 46, 47, 47, 48, 49, 49, 50, 50, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 94, 95, 95, 96, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 102, 102, 103, 103, 104, 104, 105, 105, 106, 106, 107, 107, 108, 108, 109, 109, 110, 110, 111, 111, 112, 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122]);
operand_use = array1d(0..435, [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, true, false, true, false, true, false, true, true, false, true, false, false, true, false, true, false, true, false, true, false, true, false, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, true, false, true, false, true, false, true, false, true, true, false, true, false, true, false, true, false, true, false, true, false, false, true, false, true, false, true, false, true, false, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true, false, true, false, true, false, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]);
operand_lastuse = array1d(0..435, [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, true, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]);
operand_temps = array1d(0..435, [0..0, 1..1, 2..2, 3..3, 4..4, 5..5, 6..6, 7..7, 8..8, 9..9, 10..10, 11..11, 12..12, 13..13, 14..14, 15..15, 16..16, 17..17, 18..18, 19..19, 20..20, 21..21, 22..22, 23..23, -1..0, -1..-1 union 24..24, -1..-1 union 1..1, -1..-1 union 25..25, -1..-1 union 2..2, -1..-1 union 26..26, -1..-1 union 3..3, -1..-1 union 27..27, -1..-1 union 4..4, -1..-1 union 28..28, -1..-1 union 5..5, -1..-1 union 29..29, -1..-1 union 6..6, -1..-1 union 30..30, -1..-1 union 7..7, -1..-1 union 31..31, -1..-1 union 8..8, -1..-1 union 32..32, -1..-1 union 9..9, -1..-1 union 33..33, -1..-1 union 10..10, -1..-1 union 34..34, -1..-1 union 11..11, -1..-1 union 35..35, -1..-1 union 12..12, -1..-1 union 36..36, -1..-1 union 13..13, -1..-1 union 37..37, -1..-1 union 14..14, -1..-1 union 38..38, -1..-1 union 15..15, -1..-1 union 39..39, -1..-1 union 16..16, -1..-1 union 40..40, -1..-1 union 17..17, -1..-1 union 41..41, -1..-1 union 18..18, -1..-1 union 42..42, -1..-1 union 23..23, -1..-1 union 43..43, -1..-1 union 3..3 union 27..27, -1..-1 union 44..44, -1..-1 union 4..4 union 28..28, -1..-1 union 45..45, 4..4 union 28..28 union 45..45, 3..3 union 27..27 union 44..44, 46..46, -1..-1 union 46..46, -1..-1 union 47..47, -1..0 union 24..24, -1..-1 union 48..48, 0..0 union 24..24 union 48..48, 49..49, -1..-1 union 49..49, -1..-1 union 50..50, -1..-1 union 46..47, -1..-1 union 51..51, 46..47 union 51..51 union 69..69 union 75..75 union 104..104, 52..52, -1..-1 union 52..52, -1..-1 union 53..53, -1..-1 union 49..50, -1..-1 union 54..54, -1..-1 union 52..53, -1..-1 union 55..55, 52..53 union 55..55, 49..50 union 54..54, 56..56, -1..-1 union 56..56, -1..-1 union 57..57, -1..-1 union 56..57, -1..-1 union 58..58, 56..58, 59..59, -1..-1 union 59..59, -1..-1 union 60..60, 19..19, 61..61, -1..-1 union 61..61, -1..-1 union 62..62, -1..-1 union 61..61, -1..-1 union 63..63, -1..-1 union 1..1 union 25..25, -1..-1 union 64..64, -1..-1 union 59..60, -1..-1 union 65..65, 59..60 union 65..65, 1..1 union 25..25 union 64..64 union 73..73 union 101..101, 66..66, -1..-1 union 66..66, -1..-1 union 67..67, -1..-1 union 66..67, -1..-1 union 68..68, 66..68 union 105..105, -1..-1 union 46..47, -1..-1 union 69..69, 46..47 union 51..51 union 69..69 union 75..75 union 104..104, 70..70, 71..71, -1..-1 union 61..63, -1..-1 union 72..72, -1..-1 union 1..1 union 25..25, -1..-1 union 73..73, -1..-1 union 2..2 union 26..26, -1..-1 union 74..74, -1..-1 union 46..47, -1..-1 union 75..75, -1..-1 union 61..63, -1..-1 union 76..76, 70..70, 2..2 union 26..26 union 74..74 union 102..102, 61..63 union 72..72 union 76..76, 61..63 union 72..72 union 76..76, 1..1 union 25..25 union 64..64 union 73..73 union 101..101, 46..47 union 51..51 union 69..69 union 75..75 union 104..104, 71..71, 77..77, 78..78, 79..79, 80..80, 81..81, 82..82, 83..83, 84..84, 85..85, 86..86, 87..87, 88..88, 89..89, 90..90, 91..91, 92..92, 93..93, 94..94, 95..95, 96..96, 78..78, 79..79, 80..80, 81..81, 82..82, 83..83, 84..84, 85..85, 86..86, 87..87, 88..88, 89..89, 90..90, 91..91, 92..92, 93..93, 94..94, 95..95, 96..96, -1..-1 union 77..77, -1..-1 union 97..97, 19..19, 98..98, -1..-1 union 98..98, -1..-1 union 99..99, -1..-1 union 77..77 union 97..97, -1..-1 union 100..100, -1..-1 union 1..1 union 25..25, -1..-1 union 101..101, -1..-1 union 2..2 union 26..26, -1..-1 union 102..102, -1..-1 union 23..23 union 43..43, -1..-1 union 103..103, -1..-1 union 46..47, -1..-1 union 104..104, -1..-1 union 66..67, -1..-1 union 105..105, -1..-1 union 98..99, -1..-1 union 106..106, 77..77 union 97..97 union 100..100, 19..19, 1..1 union 25..25 union 64..64 union 73..73 union 101..101, 2..2 union 26..26 union 74..74 union 102..102, 5..5 union 29..29, 6..6 union 30..30, 7..7 union 31..31, 8..8 union 32..32, 9..9 union 33..33, 10..10 union 34..34, 11..11 union 35..35, 12..12 union 36..36, 13..13 union 37..37, 14..14 union 38..38, 15..15 union 39..39, 16..16 union 40..40, 17..17 union 41..41, 18..18 union 42..42, 19..19, 20..20, 21..21, 22..22, 23..23 union 43..43 union 103..103, 46..47 union 51..51 union 69..69 union 75..75 union 104..104, 66..68 union 105..105, 98..99 union 106..106, 107..107, 108..108, 109..109, 110..110, 111..111, 112..112, 113..113, 114..114, 115..115, 116..116, 117..117, 118..118, 119..119, 120..120, 121..121, 122..122, 123..123, 124..124, 125..125, 126..126, 127..127, 128..128, 129..129, -1..-1 union 107..107, -1..-1 union 130..130, -1..-1 union 108..108, -1..-1 union 131..131, -1..-1 union 127..127, -1..-1 union 132..132, -1..-1 union 128..128, -1..-1 union 133..133, -1..-1 union 129..129, -1..-1 union 134..134, -1..-1 union 129..129 union 134..134, -1..-1 union 135..135, 129..129 union 134..135, -1..-1 union 128..128 union 133..133, -1..-1 union 136..136, 128..128 union 133..133 union 136..136, 137..137, 123..123, 138..138, -1..-1 union 138..138, -1..-1 union 139..139, 123..123, 140..140, -1..-1 union 140..140, -1..-1 union 141..141, 142..142, -1..-1 union 107..107 union 130..130, -1..-1 union 143..143, -1..-1 union 108..108 union 131..131, -1..-1 union 144..144, -1..-1 union 138..139, -1..-1 union 145..145, -1..-1 union 140..141, -1..-1 union 146..146, 137..137, 108..108 union 131..131 union 144..144, 138..139 union 145..145, 140..141 union 146..146, 107..107 union 130..130 union 143..143, 142..142, 147..147, 148..148, 149..149, 150..150, 151..151, 152..152, 153..153, 154..154, 155..155, 156..156, 157..157, 158..158, 159..159, 160..160, 161..161, 162..162, 163..163, 164..164, 165..165, 166..166, 148..148, 149..149, 150..150, 151..151, 152..152, 153..153, 154..154, 155..155, 156..156, 157..157, 158..158, 159..159, 160..160, 161..161, 162..162, 163..163, 164..164, 165..165, 166..166, -1..-1 union 147..147, -1..-1 union 167..167, -1..-1 union 147..147 union 167..167, -1..-1 union 168..168, 123..123, 147..147 union 167..168, 169..169, -1..-1 union 169..169, -1..-1 union 170..170, -1..-1 union 127..127 union 132..132, -1..-1 union 171..171, -1..-1 union 169..170, -1..-1 union 172..172, 109..109, 110..110, 111..111, 112..112, 113..113, 114..114, 115..115, 116..116, 117..117, 118..118, 119..119, 120..120, 121..121, 122..122, 123..123, 124..124, 125..125, 126..126, 127..127 union 132..132 union 171..171, 169..170 union 172..172, 173..173, 174..174, 175..175, 176..176, 177..177, 178..178, 179..179, 180..180, 181..181, 182..182, 183..183, 184..184, 185..185, 186..186, 187..187, 188..188, 189..189, 190..190, 191..191, 192..192, -1..-1 union 173..173, -1..-1 union 193..193, -1..-1 union 192..192, -1..-1 union 194..194, -1..-1 union 192..192 union 194..194, -1..-1 union 195..195, -1..-1 union 174..174, -1..-1 union 196..196, -1..-1 union 175..175, -1..-1 union 197..197, -1..-1 union 176..176, -1..-1 union 198..198, -1..-1 union 177..177, -1..-1 union 199..199, -1..-1 union 178..178, -1..-1 union 200..200, -1..-1 union 179..179, -1..-1 union 201..201, -1..-1 union 180..180, -1..-1 union 202..202, -1..-1 union 181..181, -1..-1 union 203..203, -1..-1 union 182..182, -1..-1 union 204..204, -1..-1 union 183..183, -1..-1 union 205..205, -1..-1 union 184..184, -1..-1 union 206..206, -1..-1 union 185..185, -1..-1 union 207..207, -1..-1 union 186..186, -1..-1 union 208..208, -1..-1 union 187..187, -1..-1 union 209..209, -1..-1 union 173..173 union 193..193, -1..-1 union 210..210, 192..192 union 194..195, 173..173 union 193..193 union 210..210, 174..174 union 196..196, 175..175 union 197..197, 176..176 union 198..198, 177..177 union 199..199, 178..178 union 200..200, 179..179 union 201..201, 180..180 union 202..202, 181..181 union 203..203, 182..182 union 204..204, 183..183 union 205..205, 184..184 union 206..206, 185..185 union 207..207, 186..186 union 208..208, 187..187 union 209..209, 188..188, 189..189, 190..190, 191..191]);
operand_atom = array2d(0..435, 0..20, [-1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -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, -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, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -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, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -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, -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, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -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, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -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, 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, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -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, -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, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -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, 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, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -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, 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, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -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, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -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, 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, -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, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -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, 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, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -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, -1, -1, 1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -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, -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, -1, 1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]);
related_temps = [0..0 union 24..24 union 48..48, 1..1 union 25..25 union 64..64 union 73..73 union 101..101, 2..2 union 26..26 union 74..74 union 102..102, 3..3 union 27..27 union 44..44, 4..4 union 28..28 union 45..45, 5..5 union 29..29, 6..6 union 30..30, 7..7 union 31..31, 8..8 union 32..32, 9..9 union 33..33, 10..10 union 34..34, 11..11 union 35..35, 12..12 union 36..36, 13..13 union 37..37, 14..14 union 38..38, 15..15 union 39..39, 16..16 union 40..40, 17..17 union 41..41, 18..18 union 42..42, 23..23 union 43..43 union 103..103, 46..47 union 51..51 union 69..69 union 75..75 union 104..104, 49..50 union 54..54, 52..53 union 55..55, 56..58, 59..60 union 65..65, 61..63 union 72..72 union 76..76, 66..68 union 105..105, 77..77 union 97..97 union 100..100, 98..99 union 106..106, 107..107 union 130..130 union 143..143, 108..108 union 131..131 union 144..144, 127..127 union 132..132 union 171..171, 128..128 union 133..133 union 136..136, 129..129 union 134..135, 138..139 union 145..145, 140..141 union 146..146, 147..147 union 167..168, 169..170 union 172..172, 173..173 union 193..193 union 210..210, 174..174 union 196..196, 175..175 union 197..197, 176..176 union 198..198, 177..177 union 199..199, 178..178 union 200..200, 179..179 union 201..201, 180..180 union 202..202, 181..181 union 203..203, 182..182 union 204..204, 183..183 union 205..205, 184..184 union 206..206, 185..185 union 207..207, 186..186 union 208..208, 187..187 union 209..209, 192..192 union 194..195];
temp_definer = array1d(0..210, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 74, 75, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 94, 95, 96, 97, 98, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119]);
temp_def = array1d(0..210, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 112, 114, 116, 119, 121, 122, 124, 126, 128, 130, 132, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 251, 253, 255, 257, 259, 262, 264, 266, 268, 270, 272, 273, 275, 277, 279, 281, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 328, 330, 333, 335, 337, 339, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 381, 383, 385, 387, 389, 391, 393, 395, 397, 399, 401, 403, 405, 407, 409, 411, 413, 415]);
temp_width = array1d(0..210, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 20, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1]);
temp_minlive = array1d(0..210, [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, 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, 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, 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, 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, 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, 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, 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, 1, 1, 1]);
temp_uses = array1d(0..210, [24..24 union 73..73 union 75..75, 26..26 union 106..106 union 111..111 union 125..125 union 137..137 union 187..187 union 201..201, 28..28 union 127..127 union 134..134 union 189..189 union 202..202, 30..30 union 64..64 union 69..69, 32..32 union 66..66 union 68..68, 34..34 union 203..203, 36..36 union 204..204, 38..38 union 205..205, 40..40 union 206..206, 42..42 union 207..207, 44..44 union 208..208, 46..46 union 209..209, 48..48 union 210..210, 50..50 union 211..211, 52..52 union 212..212, 54..54 union 213..213, 56..56 union 214..214, 58..58 union 215..215, 60..60 union 216..216, 100..100 union 181..181 union 200..200 union 217..217, 218..218, 219..219, 220..220, 62..62 union 191..191 union 221..221, 73..73 union 75..75, 106..106 union 111..111 union 125..125 union 137..137 union 187..187 union 201..201, 127..127 union 134..134 union 189..189 union 202..202, 64..64 union 69..69, 66..66 union 68..68, 203..203, 204..204, 205..205, 206..206, 207..207, 208..208, 209..209, 210..210, 211..211, 212..212, 213..213, 214..214, 215..215, 216..216, 191..191 union 221..221, 69..69, 68..68, 71..71 union 79..79 union 81..81 union 118..118 union 120..120 union 129..129 union 138..138 union 193..193 union 222..222, 79..79 union 81..81 union 118..118 union 120..120 union 129..129 union 138..138 union 193..193 union 222..222, 75..75, 77..77 union 85..85 union 90..90, 85..85 union 90..90, 81..81 union 120..120 union 138..138 union 222..222, 83..83 union 87..87 union 89..89, 87..87 union 89..89, 90..90, 89..89, 92..92 union 94..94 union 96..96, 94..94 union 96..96, 96..96, 98..98 union 108..108 union 110..110, 108..108 union 110..110, 102..102 union 104..104 union 123..123 union 131..131 union 135..136, 123..123 union 131..131 union 135..136, 123..123 union 131..131 union 135..136, 111..111 union 137..137 union 201..201, 110..110, 113..113 union 115..115 union 117..117 union 195..195 union 223..223, 115..115 union 117..117 union 195..195 union 223..223, 117..117 union 223..223, 81..81 union 120..120 union 138..138 union 222..222, 133..133, 139..139, 135..136, 111..111 union 137..137 union 201..201, 134..134 union 202..202, 81..81 union 120..120 union 138..138 union 222..222, 135..136, 179..179 union 185..185 union 199..199, 160..160, 161..161, 162..162, 163..163, 164..164, 165..165, 166..166, 167..167, 168..168, 169..169, 170..170, 171..171, 172..172, 173..173, 174..174, 175..175, 176..176, 177..177, 178..178, 185..185 union 199..199, 183..183 union 197..197 union 224..224, 197..197 union 224..224, 199..199, 111..111 union 137..137 union 201..201, 134..134 union 202..202, 221..221, 81..81 union 120..120 union 138..138 union 222..222, 117..117 union 223..223, 224..224, 248..248 union 274..274 union 286..286, 250..250 union 276..276 union 283..283, 340..340, 341..341, 342..342, 343..343, 344..344, 345..345, 346..346, 347..347, 348..348, 349..349, 350..350, 351..351, 352..352, 353..353, 265..265 union 269..269 union 331..331 union 354..354, 355..355, 356..356, 357..357, 252..252 union 336..336 union 358..358, 254..254 union 261..261 union 263..263, 256..256 union 258..258 union 260..260, 274..274 union 286..286, 276..276 union 283..283, 336..336 union 358..358, 261..261 union 263..263, 258..258 union 260..260, 260..260, 263..263, 282..282, 267..267 union 278..278 union 284..284, 278..278 union 284..284, 271..271 union 280..280 union 285..285, 280..280 union 285..285, 287..287, 286..286, 283..283, 284..284, 285..285, 327..327 union 329..329 union 332..332, 308..308, 309..309, 310..310, 311..311, 312..312, 313..313, 314..314, 315..315, 316..316, 317..317, 318..318, 319..319, 320..320, 321..321, 322..322, 323..323, 324..324, 325..325, 326..326, 329..329 union 332..332, 332..332, 334..334 union 338..338 union 359..359, 338..338 union 359..359, 358..358, 359..359, 380..380 union 414..414 union 417..417, 386..386 union 418..418, 388..388 union 419..419, 390..390 union 420..420, 392..392 union 421..421, 394..394 union 422..422, 396..396 union 423..423, 398..398 union 424..424, 400..400 union 425..425, 402..402 union 426..426, 404..404 union 427..427, 406..406 union 428..428, 408..408 union 429..429, 410..410 union 430..430, 412..412 union 431..431, 432..432, 433..433, 434..434, 435..435, 382..382 union 384..384 union 416..416, 414..414 union 417..417, 384..384 union 416..416, 416..416, 418..418, 419..419, 420..420, 421..421, 422..422, 423..423, 424..424, 425..425, 426..426, 427..427, 428..428, 429..429, 430..430, 431..431, 417..417]);
packed_pq = array2d(1..0, 1..0, []);
before_pred = [0, 1, 2, 3, 4, 23, 23, 68, 69, 75, 89, 90, 96, 110, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 263, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 282, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 332];
before_succ = [134, 135, 136, 133, 140, 122, 139, 70, 70, 76, 91, 91, 97, 112, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 155, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 264, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 303, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 333];
before_cond = [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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
nogood = [5, 7, 12, 16, 19, 23, 25, 28, 32, 36, 39, 43, 47, 50, 54, 56, 60, 64, 68, 72, 76, 80, 81, 82, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107];
across_op = [58, 92];
across_regs = [{}, {}];
across_items = [1..40, 41..60];
across_item_temp = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 27, 28, 43, 46, 47, 51, 59, 60, 64, 66, 67, 68, 69, 73, 74, 75, 101, 102, 104, 105, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 132];
across_item_cond = [112, 117, 122, 127, 132, 137, 142, 147, 152, 157, 162, 167, 172, 177, 1, 1, 1, 1, 184, 188, 190, 192, 197, 203, 212, 215, 217, 220, 225, 229, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 248, 254];
setacross_op = [58, 92];
setacross_regs = [{}, {}];
setacross_tempsets = [1..23, 24..42];
difftemp = [];
diffreg = [68..69, 89..90, 110..111, 199..200, 201..224, 225..247, 331..332, 340..359, 360..379, 417..435];
domop_operands = [];
domop_temps = [];
domuse_p = [24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 71, 73, 77, 79, 81, 81, 81, 83, 85, 87, 92, 94, 98, 100, 100, 102, 104, 106, 108, 111, 111, 113, 115, 117, 118, 120, 120, 123, 125, 127, 129, 131, 134, 137, 138, 179, 181, 181, 183, 185, 187, 189, 191, 193, 195, 197, 200, 248, 250, 252, 254, 256, 258, 261, 265, 265, 267, 269, 269, 271, 274, 276, 278, 280, 327, 329, 331, 334, 336, 338, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414];
domuse_q = [75, 201, 202, 69, 68, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 221, 69, 68, 222, 75, 90, 222, 120, 138, 222, 89, 90, 89, 96, 96, 110, 200, 217, 135, 135, 201, 110, 137, 201, 223, 223, 223, 222, 138, 222, 135, 201, 202, 222, 135, 202, 201, 222, 199, 200, 217, 224, 199, 201, 202, 221, 222, 223, 224, 217, 286, 283, 358, 263, 260, 260, 263, 331, 354, 284, 331, 354, 285, 286, 283, 284, 285, 332, 332, 354, 359, 358, 359, 417, 416, 416, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 417];
domuse_r = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 23, 3, 4, 70, 0, 76, 70, 70, 70, 70, 82, 76, 82, 91, 91, 97, 19, 19, 101, 101, 1, 97, 1, 1, 112, 112, 112, 70, 70, 70, 101, 1, 2, 70, 101, 2, 1, 70, 140, 19, 19, 182, 140, 1, 2, 23, 70, 112, 182, 19, 225, 226, 245, 246, 247, 247, 246, 241, 241, 266, 241, 241, 270, 225, 226, 266, 270, 288, 288, 241, 333, 245, 333, 360, 379, 379, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 360];
infassign = array2d(1..41, 1..4, [24, 10, 79, 79, 25, 10, 80, 81, 26, 10, 82, 83, 27, 10, 84, 84, 28, 10, 85, 85, 29, 10, 86, 86, 30, 10, 87, 87, 31, 10, 88, 88, 32, 10, 89, 89, 33, 10, 90, 90, 34, 10, 91, 91, 35, 10, 92, 92, 36, 10, 93, 93, 37, 10, 67, 67, 38, 10, 69, 69, 39, 10, 71, 71, 40, 10, 73, 73, 41, 10, 75, 75, 42, 10, 77, 77, 43, 10, 94, 96, 47, 10, 97, 98, 50, 10, 99, 99, 53, 10, 100, 100, 57, 10, 101, 101, 60, 10, 102, 102, 62, 10, 103, 104, 63, 10, 103, 104, 67, 10, 105, 106, 97, 10, 107, 107, 99, 10, 108, 110, 130, 10, 80, 81, 131, 10, 82, 83, 132, 10, 94, 96, 133, 10, 97, 98, 134, 10, 105, 106, 139, 10, 111, 111, 141, 10, 112, 112, 167, 10, 113, 113, 170, 10, 108, 110, 193, 10, 108, 110, 194, 10, 94, 96]);
space = array1d(-1..17, [-1, 0, 1, 1, 2, 3, 4, 5, 6, 6, 6, 6, 7, 8, 9, 10, 10, 11, 11]);
dominate_ing = [3, 6, 7, 29, 30, 32, 36, 39, 42, 42, 46, 47, 49, 52, 53, 55, 60, 62, 73, 74, 75, 76, 77, 83, 85, 94, 97, 102, 103];
dominate_ed = [27, 23, 24, 33, 49, 34, 37, 44, 52, 56, 47, 68, 55, 56, 64, 67, 63, 69, 87, 88, 98, 80, 78, 89, 90, 95, 99, 119, 104];
dominate_instructions = [{}, {}, {}, {}, {}, {}, {}, {}, 8..8, 8..8, {}, {}, {}, {}, {}, {}, {}, {}, 8..8, 8..8, {}, 8..8, 8..8, {}, {}, {}, {}, 8..8, 8..8];
dominate_temps = [{}, {}, {}, {}, {}, {}, {}, {}, 62..62, 62..62, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}];
precedence = [268, 286, 328, 380, 392, 403, 418, 428, 432, 437, 442, 446, 450, 454, 476, 480, 486, 490, 496, 526, 532, 536, 540, 544, 548, 552, 556, 560, 564, 568, 572, 576, 580, 584, 588, 592, 596, 600, 604, 608, 612, 616, 620, 624, 628, 632, 636, 640, 644, 648, 652, 656, 660, 664, 668, 672, 676, 680, 684, 688, 692, 696, 700, 704, 708, 712, 716, 720, 724, 728, 732, 736, 740, 744, 748, 752, 756, 760, 764, 768, 772, 776, 780, 784, 788, 792, 796, 800, 804, 808, 812, 816, 820, 824, 828, 832, 838, 842, 848, 852, 858, 862, 868, 872, 878, 882, 888, 892, 898, 902, 908, 912, 918, 922, 928, 932, 936, 940, 944, 948, 952, 956, 960, 964, 968, 972, 976, 980, 984, 988, 992, 996, 1000, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044, 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1064, 1066, 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162, 1164, 1166, 1168, 1170, 1172, 1174, 1176, 1178, 1180, 1182, 1184, 1186, 1188, 1190, 1192, 1194, 1196, 1198, 1200, 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216, 1218, 1220, 1222, 1225, 1227, 1230, 1232, 1235, 1237, 1240, 1242, 1245, 1247, 1249, 1251, 1254, 1256, 1259, 1261, 1263, 1265, 1267, 1269, 1272, 1274, 1276, 1279, 1281, 1283, 1285, 1287, 1289, 1291, 1293, 1295, 1297, 1299, 1301, 1303, 1305, 1307, 1309, 1311, 1313, 1315, 1317, 1319, 1321, 1323, 1325, 1327, 1329, 1331, 1333, 1335, 1337, 1339, 1341, 1343, 1345, 1347, 1349, 1351, 1353, 1355, 1357, 1359, 1361, 1363, 1365, 1367, 1369, 1371, 1373, 1375, 1377, 1379, 1381, 1383, 1385, 1387, 1389, 1392, 1395, 1398, 1401, 1404, 1407, 1409, 1411, 1414, 1416, 1418, 1420, 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1436, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538];
table_exists_ops = [2..2, 4..4, 5..5, 22..22, 26..26, 41..41, 43..43, 54..54, 120..120];
table_iffall_ops = [];
relation_ops = [6..6 union 23..23 union 30..30 union 49..49 union 55..55 union 67..67, 7..7 union 24..24 union 30..30 union 49..49 union 55..55 union 67..67, 46..47 union 53..53 union 64..64 union 68..68, 8..8, 9..9, 10..10, 11..11, 12..12, 13..13, 14..14, 15..15, 16..16, 17..17, 18..18, 19..19, 20..20, 21..21, 105..105, 106..106, 107..107, 108..108, 109..109, 110..110, 111..111, 112..112, 113..113, 114..114, 115..115, 116..116, 117..117, 118..118, 3..3 union 27..27, 6..6 union 23..23, 7..7 union 24..24, 22..22 union 66..66, 29..29 union 33..33, 32..32 union 34..34, 36..37, 39..39 union 44..44, 60..60 union 63..63, 62..62 union 69..69, 73..73 union 87..87, 74..74 union 88..88, 75..75 union 98..98, 76..76 union 80..80, 77..78, 83..83 union 89..89, 85..85 union 90..90, 94..95, 97..97 union 99..99, 102..102 union 119..119, 103..104, 5..5 union 54..54 union 65..65, 46..47 union 68..68, 4..4 union 43..43 union 53..53 union 64..64, 41..42 union 52..52 union 56..56, 26..26 union 30..30 union 49..49 union 55..55 union 67..67];
relation_temps = [{}, {}, {}, 203..203, 204..204, 205..205, 206..206, 207..207, 208..208, 209..209, 210..210, 211..211, 212..212, 213..213, 214..214, 215..215, 216..216, 418..418, 419..419, 420..420, 421..421, 422..422, 423..423, 424..424, 425..425, 426..426, 427..427, 428..428, 429..429, 430..430, 431..431, 73..73 union 75..75, 64..64 union 69..69, 66..66 union 68..68, 191..191 union 221..221, 85..85 union 90..90, 87..87 union 89..89, 94..94 union 96..96, 108..108 union 110..110, 185..185 union 199..199, 197..197 union 224..224, 274..274 union 286..286, 276..276 union 283..283, 336..336 union 358..358, 261..261 union 263..263, 258..258 union 260..260, 278..278 union 284..284, 280..280 union 285..285, 329..329 union 332..332, 338..338 union 359..359, 414..414 union 417..417, 384..384 union 416..416, 127..127 union 134..134 union 189..189 union 202..202, 115..115 union 117..117 union 195..195 union 223..223, 106..106 union 111..111 union 125..125 union 137..137 union 187..187 union 201..201, 123..123 union 131..131 union 135..136, 79..79 union 81..81 union 118..118 union 120..120 union 129..129 union 138..138 union 193..193 union 222..222];
relation_ntuples = [15, 15, 12, 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, 2, 3, 3, 3, 3, 3, 3, 4, 4, 3, 4, 4, 3, 3, 3, 3, 4, 4, 5, 10, 23, 9, 91];
relation_range = [1..90, 91..180, 181..240, 241..244, 245..248, 249..252, 253..256, 257..260, 261..264, 265..268, 269..272, 273..276, 277..280, 281..284, 285..288, 289..292, 293..296, 297..300, 301..304, 305..308, 309..312, 313..316, 317..320, 321..324, 325..328, 329..332, 333..336, 337..340, 341..344, 345..348, 349..352, 353..364, 365..376, 377..388, 389..396, 397..408, 409..420, 421..432, 433..444, 445..456, 457..468, 469..484, 485..500, 501..512, 513..528, 529..544, 545..556, 557..568, 569..580, 581..592, 593..608, 609..624, 625..659, 660..729, 730..959, 960..1031, 1032..2214];
ints = [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 5, 1, 29, 0, 6, 1, 30, 0, 7, 1, 31, 0, 8, 1, 32, 0, 9, 1, 33, 0, 10, 1, 34, 0, 11, 1, 35, 0, 12, 1, 36, 0, 13, 1, 37, 0, 14, 1, 38, 0, 15, 1, 39, 0, 16, 1, 40, 0, 17, 1, 41, 0, 18, 1, 42, 0, 174, 1, 196, 0, 175, 1, 197, 0, 176, 1, 198, 0, 177, 1, 199, 0, 178, 1, 200, 0, 179, 1, 201, 0, 180, 1, 202, 0, 181, 1, 203, 0, 182, 1, 204, 0, 183, 1, 205, 0, 184, 1, 206, 0, 185, 1, 207, 0, 186, 1, 208, 0, 187, 1, 209, 0, 0, -1, 0, 1, 0, -1, 24, 1, 1, 24, 48, 0, 0, -1, 3, 1, 0, -1, 27, 1, 1, 27, 44, 0, 0, -1, 4, 1, 0, -1, 28, 1, 1, 28, 45, 1, 0, -1, 43, 1, 1, 43, 103, 0, 0, -1, 49, 1, 0, -1, 50, 1, 1, 50, 54, 0, 0, -1, 52, 1, 0, -1, 53, 1, 1, 53, 55, 0, 0, -1, 56, 1, 0, -1, 57, 1, 1, 57, 58, 0, 0, -1, 59, 1, 0, -1, 60, 1, 1, 60, 65, 0, 0, -1, 77, 1, 0, -1, 97, 1, 1, 97, 100, 0, 0, -1, 98, 1, 0, -1, 99, 1, 1, 99, 106, 0, 0, -1, 107, 0, 1, 107, 143, 1, 0, -1, 130, 1, 1, 130, 143, 0, 0, -1, 108, 0, 1, 108, 144, 1, 0, -1, 131, 1, 1, 131, 144, 0, 0, -1, 127, 1, 0, -1, 132, 1, 1, 132, 171, 0, 0, -1, 128, 0, 1, 128, 136, 1, 0, -1, 133, 1, 1, 133, 136, 0, 0, -1, 129, 0, 1, 129, 135, 1, 0, -1, 134, 1, 1, 134, 135, 0, 0, -1, 138, 1, 0, -1, 139, 1, 1, 139, 145, 0, 0, -1, 140, 1, 0, -1, 141, 1, 1, 141, 146, 0, 0, -1, 147, 1, 0, -1, 167, 1, 1, 167, 168, 0, 0, -1, 169, 1, 0, -1, 170, 1, 1, 170, 172, 0, 0, -1, 173, 0, 1, 173, 210, 1, 0, -1, 193, 1, 1, 193, 210, 0, 0, -1, 192, 0, 1, 192, 195, 1, 0, -1, 194, 1, 1, 194, 195, 1, 1, 0, 2, 26, -1, 74, 1, 1, 0, 26, 26, -1, 74, 1, 1, 1, 2, 74, 26, 102, 1, 1, 1, 26, 74, 2, 102, 1, 1, 1, 26, 74, 26, 102, 0, 0, 0, -1, 66, -1, 66, 1, 0, 0, -1, 66, -1, 67, 1, 0, 0, -1, 67, -1, 67, 1, 1, 0, 66, 67, -1, 68, 1, 1, 0, 67, 66, -1, 68, 1, 1, 0, 67, 67, -1, 68, 1, 1, 0, 67, 68, -1, 68, 1, 1, 1, 66, 68, 67, 105, 1, 1, 1, 67, 68, 66, 105, 1, 1, 1, 67, 68, 67, 105, 1, 1, 0, 0, 1, 1, -1, 25, -1, 64, 1, 1, 0, 0, 1, 25, -1, 25, -1, 64, 1, 1, 0, 0, 1, 64, -1, 25, -1, 64, 1, 1, 0, 0, 25, 1, -1, 25, -1, 64, 1, 1, 0, 0, 25, 25, -1, 25, -1, 64, 1, 1, 0, 0, 25, 64, -1, 25, -1, 64, 1, 1, 1, 0, 1, 1, 25, 64, -1, 73, 1, 1, 1, 0, 1, 25, 1, 64, -1, 73, 1, 1, 1, 0, 1, 25, 25, 64, -1, 73, 1, 1, 1, 0, 1, 64, 25, 64, -1, 73, 1, 1, 1, 0, 25, 1, 1, 64, -1, 73, 1, 1, 1, 0, 25, 1, 25, 64, -1, 73, 1, 1, 1, 0, 25, 25, 1, 64, -1, 73, 1, 1, 1, 0, 25, 25, 25, 64, -1, 73, 1, 1, 1, 0, 25, 64, 1, 64, -1, 73, 1, 1, 1, 0, 25, 64, 25, 64, -1, 73, 1, 1, 1, 1, 1, 64, 1, 73, 25, 101, 1, 1, 1, 1, 1, 64, 25, 73, 1, 101, 1, 1, 1, 1, 1, 64, 25, 73, 25, 101, 1, 1, 1, 1, 25, 64, 1, 73, 1, 101, 1, 1, 1, 1, 25, 64, 1, 73, 25, 101, 1, 1, 1, 1, 25, 64, 25, 73, 1, 101, 1, 1, 1, 1, 25, 64, 25, 73, 25, 101, 1, 0, 0, 0, -1, -1, 61, 62, 1, 0, 0, 0, -1, -1, 62, 61, 1, 0, 1, 0, 62, -1, 61, 72, 1, 0, 1, 0, 62, -1, 62, 72, 1, 0, 1, 0, 62, -1, 72, 61, 1, 0, 1, 1, 62, 62, 72, 76, 1, 1, 0, 0, -1, -1, 62, 63, 1, 1, 1, 0, 62, -1, 63, 72, 1, 1, 1, 1, 62, 63, 72, 76, 1, 0, 0, 0, 0, -1, 46, -1, 46, -1, 46, -1, 47, 1, 0, 0, 0, 0, -1, 46, -1, 46, -1, 47, -1, 46, 1, 1, 0, 0, 0, 46, 46, -1, 46, -1, 47, -1, 51, 1, 1, 0, 0, 0, 46, 46, -1, 47, -1, 47, -1, 51, 1, 1, 0, 0, 0, 46, 46, -1, 51, -1, 47, -1, 51, 1, 1, 0, 0, 0, 46, 47, -1, 47, -1, 47, -1, 51, 1, 1, 0, 0, 0, 46, 47, -1, 51, -1, 47, -1, 51, 1, 1, 0, 0, 0, 46, 51, -1, 51, -1, 47, -1, 51, 1, 1, 0, 0, 0, 47, 46, -1, 46, -1, 46, -1, 51, 1, 1, 0, 0, 0, 47, 46, -1, 46, -1, 47, -1, 51, 1, 1, 0, 0, 0, 47, 46, -1, 46, -1, 51, -1, 46, 1, 1, 0, 0, 0, 47, 46, -1, 47, -1, 47, -1, 51, 1, 1, 0, 0, 0, 47, 46, -1, 51, -1, 47, -1, 51, 1, 1, 0, 0, 0, 47, 47, -1, 47, -1, 47, -1, 51, 1, 1, 0, 0, 0, 47, 47, -1, 51, -1, 47, -1, 51, 1, 1, 0, 0, 0, 47, 51, -1, 51, -1, 47, -1, 51, 1, 1, 1, 0, 0, 46, 46, 46, 47, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 46, 47, 46, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 46, 47, 47, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 46, 47, 51, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 46, 47, 69, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 47, 46, 47, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 47, 46, 51, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 47, 46, 69, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 47, 47, 47, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 47, 47, 51, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 47, 47, 69, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 51, 47, 51, -1, 51, -1, 69, 1, 1, 1, 0, 0, 46, 51, 47, 69, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 46, 46, 46, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 46, 46, 47, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 46, 46, 51, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 46, 46, 69, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 46, 47, 46, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 46, 47, 47, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 46, 47, 51, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 46, 47, 69, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 47, 46, 47, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 47, 46, 51, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 47, 46, 69, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 47, 47, 47, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 47, 47, 51, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 47, 47, 69, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 51, 46, 51, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 51, 46, 69, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 51, 47, 51, -1, 51, -1, 69, 1, 1, 1, 0, 0, 47, 51, 47, 69, -1, 51, -1, 69, 1, 1, 1, 1, 0, 46, 46, 46, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 46, 46, 47, 51, 46, 69, -1, 75, 1, 1, 1, 1, 0, 46, 46, 47, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 46, 47, 46, 51, 46, 69, -1, 75, 1, 1, 1, 1, 0, 46, 47, 46, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 46, 47, 47, 51, 46, 69, -1, 75, 1, 1, 1, 1, 0, 46, 47, 47, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 46, 51, 46, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 46, 51, 46, 69, 47, 69, -1, 75, 1, 1, 1, 1, 0, 46, 51, 47, 51, 46, 69, -1, 75, 1, 1, 1, 1, 0, 46, 51, 47, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 46, 51, 47, 69, 46, 69, -1, 75, 1, 1, 1, 1, 0, 46, 51, 47, 69, 47, 69, -1, 75, 1, 1, 1, 1, 0, 47, 46, 46, 51, 46, 69, -1, 75, 1, 1, 1, 1, 0, 47, 46, 46, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 47, 46, 47, 51, 46, 69, -1, 75, 1, 1, 1, 1, 0, 47, 46, 47, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 47, 47, 46, 51, 46, 69, -1, 75, 1, 1, 1, 1, 0, 47, 47, 46, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 47, 47, 47, 51, 46, 69, -1, 75, 1, 1, 1, 1, 0, 47, 47, 47, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 47, 51, 46, 51, 46, 69, -1, 75, 1, 1, 1, 1, 0, 47, 51, 46, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 47, 51, 46, 69, 46, 69, -1, 75, 1, 1, 1, 1, 0, 47, 51, 46, 69, 47, 69, -1, 75, 1, 1, 1, 1, 0, 47, 51, 47, 51, 46, 69, -1, 75, 1, 1, 1, 1, 0, 47, 51, 47, 51, 47, 69, -1, 75, 1, 1, 1, 1, 0, 47, 51, 47, 69, 46, 69, -1, 75, 1, 1, 1, 1, 0, 47, 51, 47, 69, 47, 69, -1, 75, 1, 1, 1, 1, 1, 46, 51, 46, 69, 46, 75, 47, 104, 1, 1, 1, 1, 1, 46, 51, 46, 69, 47, 75, 46, 104, 1, 1, 1, 1, 1, 46, 51, 46, 69, 47, 75, 47, 104, 1, 1, 1, 1, 1, 46, 51, 47, 69, 46, 75, 46, 104, 1, 1, 1, 1, 1, 46, 51, 47, 69, 46, 75, 47, 104, 1, 1, 1, 1, 1, 46, 51, 47, 69, 47, 75, 46, 104, 1, 1, 1, 1, 1, 46, 51, 47, 69, 47, 75, 47, 104, 1, 1, 1, 1, 1, 47, 51, 46, 69, 46, 75, 46, 104, 1, 1, 1, 1, 1, 47, 51, 46, 69, 46, 75, 47, 104, 1, 1, 1, 1, 1, 47, 51, 46, 69, 47, 75, 46, 104, 1, 1, 1, 1, 1, 47, 51, 46, 69, 47, 75, 47, 104, 1, 1, 1, 1, 1, 47, 51, 47, 69, 46, 75, 46, 104, 1, 1, 1, 1, 1, 47, 51, 47, 69, 46, 75, 47, 104, 1, 1, 1, 1, 1, 47, 51, 47, 69, 47, 75, 46, 104, 1, 1, 1, 1, 1, 47, 51, 47, 69, 47, 75, 47, 104];
calleesaved_spill = [8..8 union 105..105, 9..9 union 106..106, 10..10 union 107..107, 11..11 union 108..108, 12..12 union 109..109, 13..13 union 110..110, 14..14 union 111..111, 15..15 union 112..112, 16..16 union 113..113, 17..17 union 114..114, 18..18 union 115..115, 19..19 union 116..116, 20..20 union 117..117, 21..21 union 118..118];
cs_spill_transpose = array2d(1..2, 1..14, [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118]);
activator_insns = [6..8 union 13..13 union 18..18];
activator_ops = [2..2 union 120..120];
value_precede_min = [1, 1];
value_precede_max = [74, 74];
value_precede_regs = [1..1 union 3..3 union 8..15 union 24..24 union 30..30, 16..23];
value_precede_temps = [24, 25, 26, 27, 28, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 167, 168, 169, 170, 171, 172, 193, 194, 195, 210];
lat_table = array2d(1..736, 1..4, [0, 2, 0, 1, 0, 2, 1, 1, 0, 2, 2, 1, 0, 2, 3, 1, 0, 2, 4, 1, 0, 2, 5, 1, 0, 2, 6, 1, 0, 2, 7, 1, 0, 2, 8, 1, 0, 2, 9, 1, 0, 2, 10, 1, 0, 2, 11, 1, 0, 2, 12, 1, 0, 2, 13, 1, 0, 2, 14, 1, 0, 2, 15, 1, 0, 2, 16, 1, 0, 2, 17, 1, 0, 2, 18, 1, 0, 2, 19, 1, 0, 2, 20, 1, 0, 2, 21, 1, 0, 2, 22, 1, 0, 2, 23, 1, 3, 0, 24, 0, 3, 0, 25, 0, 3, 5, 24, 0, 3, 5, 25, 1, 3, 6, 24, 0, 3, 6, 25, 1, 4, 0, 26, 0, 4, 0, 27, 0, 4, 5, 26, 0, 4, 5, 27, 1, 4, 6, 26, 0, 4, 6, 27, 1, 5, 0, 28, 0, 5, 0, 29, 0, 5, 5, 28, 0, 5, 5, 29, 1, 5, 6, 28, 0, 5, 6, 29, 1, 6, 0, 30, 0, 6, 0, 31, 0, 6, 5, 30, 0, 6, 5, 31, 1, 6, 6, 30, 0, 6, 6, 31, 1, 7, 0, 32, 0, 7, 0, 33, 0, 7, 5, 32, 0, 7, 5, 33, 1, 7, 6, 32, 0, 7, 6, 33, 1, 8, 0, 34, 0, 8, 0, 35, 0, 8, 6, 34, 0, 8, 6, 35, 1, 9, 0, 36, 0, 9, 0, 37, 0, 9, 6, 36, 0, 9, 6, 37, 1, 10, 0, 38, 0, 10, 0, 39, 0, 10, 6, 38, 0, 10, 6, 39, 1, 11, 0, 40, 0, 11, 0, 41, 0, 11, 6, 40, 0, 11, 6, 41, 1, 12, 0, 42, 0, 12, 0, 43, 0, 12, 6, 42, 0, 12, 6, 43, 1, 13, 0, 44, 0, 13, 0, 45, 0, 13, 6, 44, 0, 13, 6, 45, 1, 14, 0, 46, 0, 14, 0, 47, 0, 14, 6, 46, 0, 14, 6, 47, 1, 15, 0, 48, 0, 15, 0, 49, 0, 15, 6, 48, 0, 15, 6, 49, 1, 16, 0, 50, 0, 16, 0, 51, 0, 16, 7, 50, 0, 16, 7, 51, 1, 17, 0, 52, 0, 17, 0, 53, 0, 17, 7, 52, 0, 17, 7, 53, 1, 18, 0, 54, 0, 18, 0, 55, 0, 18, 7, 54, 0, 18, 7, 55, 1, 19, 0, 56, 0, 19, 0, 57, 0, 19, 7, 56, 0, 19, 7, 57, 1, 20, 0, 58, 0, 20, 0, 59, 0, 20, 7, 58, 0, 20, 7, 59, 1, 21, 0, 60, 0, 21, 0, 61, 0, 21, 7, 60, 0, 21, 7, 61, 1, 22, 0, 62, 0, 22, 0, 63, 0, 22, 5, 62, 0, 22, 5, 63, 1, 22, 6, 62, 0, 22, 6, 63, 1, 23, 0, 64, 0, 23, 0, 65, 0, 23, 5, 64, 0, 23, 5, 65, 1, 23, 8, 64, 0, 23, 8, 65, 3, 24, 0, 66, 0, 24, 0, 67, 0, 24, 5, 66, 0, 24, 5, 67, 1, 24, 8, 66, 0, 24, 8, 67, 3, 25, 9, 68, 0, 25, 9, 69, 0, 25, 9, 70, 1, 26, 0, 71, 0, 26, 0, 72, 0, 26, 5, 71, 0, 26, 5, 72, 1, 26, 6, 71, 0, 26, 6, 72, 1, 27, 0, 73, 0, 27, 0, 74, 0, 27, 5, 73, 0, 27, 5, 74, 1, 27, 8, 73, 0, 27, 8, 74, 3, 28, 10, 75, 0, 28, 10, 76, 1, 29, 0, 77, 0, 29, 0, 78, 0, 29, 5, 77, 0, 29, 5, 78, 1, 29, 6, 77, 0, 29, 6, 78, 1, 30, 0, 79, 0, 30, 0, 80, 0, 30, 5, 79, 0, 30, 5, 80, 1, 30, 8, 79, 0, 30, 8, 80, 3, 31, 11, 81, 0, 31, 11, 82, 3, 32, 0, 83, 0, 32, 0, 84, 0, 32, 5, 83, 0, 32, 5, 84, 1, 32, 6, 83, 0, 32, 6, 84, 1, 33, 0, 85, 0, 33, 0, 86, 0, 33, 5, 85, 0, 33, 5, 86, 1, 33, 8, 85, 0, 33, 8, 86, 3, 34, 0, 87, 0, 34, 0, 88, 0, 34, 5, 87, 0, 34, 5, 88, 1, 34, 8, 87, 0, 34, 8, 88, 3, 35, 9, 89, 0, 35, 9, 90, 0, 35, 9, 91, 1, 36, 0, 92, 0, 36, 0, 93, 0, 36, 5, 92, 0, 36, 5, 93, 1, 36, 6, 92, 0, 36, 6, 93, 1, 37, 0, 94, 0, 37, 0, 95, 0, 37, 5, 94, 0, 37, 5, 95, 1, 37, 8, 94, 0, 37, 8, 95, 3, 38, 11, 96, 0, 38, 11, 97, 3, 39, 0, 98, 0, 39, 0, 99, 0, 39, 5, 98, 0, 39, 5, 99, 1, 39, 6, 98, 0, 39, 6, 99, 1, 40, 12, 100, 0, 40, 12, 101, 1, 41, 0, 102, 0, 41, 0, 103, 0, 41, 5, 102, 0, 41, 5, 103, 1, 41, 6, 102, 0, 41, 6, 103, 1, 42, 0, 104, 0, 42, 0, 105, 0, 42, 5, 104, 0, 42, 5, 105, 1, 42, 6, 104, 0, 42, 6, 105, 1, 43, 0, 106, 0, 43, 0, 107, 0, 43, 5, 106, 0, 43, 5, 107, 1, 43, 8, 106, 0, 43, 8, 107, 3, 44, 0, 108, 0, 44, 0, 109, 0, 44, 5, 108, 0, 44, 5, 109, 1, 44, 8, 108, 0, 44, 8, 109, 3, 45, 9, 110, 0, 45, 9, 111, 0, 45, 9, 112, 1, 46, 0, 113, 0, 46, 0, 114, 0, 46, 5, 113, 0, 46, 5, 114, 1, 46, 6, 113, 0, 46, 6, 114, 1, 47, 0, 115, 0, 47, 0, 116, 0, 47, 5, 115, 0, 47, 5, 116, 1, 47, 8, 115, 0, 47, 8, 116, 3, 48, 13, 117, 0, 49, 0, 118, 0, 49, 0, 119, 0, 49, 5, 118, 0, 49, 5, 119, 1, 49, 8, 118, 0, 49, 8, 119, 3, 50, 11, 120, 0, 50, 11, 121, 3, 51, 14, 122, 2, 52, 0, 123, 0, 52, 0, 124, 0, 52, 5, 123, 0, 52, 5, 124, 1, 52, 8, 123, 0, 52, 8, 124, 3, 53, 0, 125, 0, 53, 0, 126, 0, 53, 5, 125, 0, 53, 5, 126, 1, 53, 8, 125, 0, 53, 8, 126, 3, 54, 0, 127, 0, 54, 0, 128, 0, 54, 5, 127, 0, 54, 5, 128, 1, 54, 8, 127, 0, 54, 8, 128, 3, 55, 0, 129, 0, 55, 0, 130, 0, 55, 5, 129, 0, 55, 5, 130, 1, 55, 8, 129, 0, 55, 8, 130, 3, 56, 0, 131, 0, 56, 0, 132, 0, 56, 5, 131, 0, 56, 5, 132, 1, 56, 8, 131, 0, 56, 8, 132, 3, 57, 15, 133, 0, 58, 2, 134, 0, 58, 2, 135, 0, 58, 2, 136, 0, 58, 2, 137, 0, 58, 2, 138, 0, 58, 2, 139, 0, 58, 2, 140, 1, 58, 2, 141, 1, 58, 2, 142, 1, 58, 2, 143, 1, 58, 2, 144, 1, 58, 2, 145, 1, 58, 2, 146, 1, 58, 2, 147, 1, 58, 2, 148, 1, 58, 2, 149, 1, 58, 2, 150, 1, 58, 2, 151, 1, 58, 2, 152, 1, 58, 2, 153, 1, 58, 2, 154, 1, 58, 2, 155, 1, 58, 2, 156, 1, 58, 2, 157, 1, 58, 2, 158, 1, 58, 2, 159, 1, 59, 1, 160, 0, 59, 1, 161, 0, 59, 1, 162, 0, 59, 1, 163, 0, 59, 1, 164, 0, 59, 1, 165, 0, 59, 1, 166, 0, 59, 1, 167, 0, 59, 1, 168, 0, 59, 1, 169, 0, 59, 1, 170, 0, 59, 1, 171, 0, 59, 1, 172, 0, 59, 1, 173, 0, 59, 1, 174, 0, 59, 1, 175, 0, 59, 1, 176, 0, 59, 1, 177, 0, 59, 1, 178, 0, 60, 0, 179, 0, 60, 0, 180, 0, 60, 5, 179, 0, 60, 5, 180, 1, 60, 6, 179, 0, 60, 6, 180, 1, 61, 12, 181, 0, 61, 12, 182, 1, 62, 0, 183, 0, 62, 0, 184, 0, 62, 5, 183, 0, 62, 5, 184, 1, 62, 6, 183, 0, 62, 6, 184, 1, 63, 0, 185, 0, 63, 0, 186, 0, 63, 5, 185, 0, 63, 5, 186, 1, 63, 8, 185, 0, 63, 8, 186, 3, 64, 0, 187, 0, 64, 0, 188, 0, 64, 5, 187, 0, 64, 5, 188, 1, 64, 8, 187, 0, 64, 8, 188, 3, 65, 0, 189, 0, 65, 0, 190, 0, 65, 5, 189, 0, 65, 5, 190, 1, 65, 8, 189, 0, 65, 8, 190, 3, 66, 0, 191, 0, 66, 0, 192, 0, 66, 5, 191, 0, 66, 5, 192, 1, 66, 8, 191, 0, 66, 8, 192, 3, 67, 0, 193, 0, 67, 0, 194, 0, 67, 5, 193, 0, 67, 5, 194, 1, 67, 8, 193, 0, 67, 8, 194, 3, 68, 0, 195, 0, 68, 0, 196, 0, 68, 5, 195, 0, 68, 5, 196, 1, 68, 8, 195, 0, 68, 8, 196, 3, 69, 0, 197, 0, 69, 0, 198, 0, 69, 5, 197, 0, 69, 5, 198, 1, 69, 8, 197, 0, 69, 8, 198, 3, 70, 16, 199, 0, 70, 16, 200, 0, 71, 2, 201, 0, 71, 2, 202, 0, 71, 2, 203, 0, 71, 2, 204, 0, 71, 2, 205, 0, 71, 2, 206, 0, 71, 2, 207, 0, 71, 2, 208, 0, 71, 2, 209, 0, 71, 2, 210, 0, 71, 2, 211, 0, 71, 2, 212, 0, 71, 2, 213, 0, 71, 2, 214, 0, 71, 2, 215, 0, 71, 2, 216, 0, 71, 2, 217, 0, 71, 2, 218, 0, 71, 2, 219, 0, 71, 2, 220, 0, 71, 2, 221, 0, 71, 2, 222, 0, 71, 2, 223, 0, 71, 2, 224, 0, 72, 2, 225, 1, 72, 2, 226, 1, 72, 2, 227, 1, 72, 2, 228, 1, 72, 2, 229, 1, 72, 2, 230, 1, 72, 2, 231, 1, 72, 2, 232, 1, 72, 2, 233, 1, 72, 2, 234, 1, 72, 2, 235, 1, 72, 2, 236, 1, 72, 2, 237, 1, 72, 2, 238, 1, 72, 2, 239, 1, 72, 2, 240, 1, 72, 2, 241, 1, 72, 2, 242, 1, 72, 2, 243, 1, 72, 2, 244, 1, 72, 2, 245, 1, 72, 2, 246, 1, 72, 2, 247, 1, 73, 0, 248, 0, 73, 0, 249, 0, 73, 5, 248, 0, 73, 5, 249, 1, 73, 6, 248, 0, 73, 6, 249, 1, 74, 0, 250, 0, 74, 0, 251, 0, 74, 5, 250, 0, 74, 5, 251, 1, 74, 6, 250, 0, 74, 6, 251, 1, 75, 0, 252, 0, 75, 0, 253, 0, 75, 5, 252, 0, 75, 5, 253, 1, 75, 6, 252, 0, 75, 6, 253, 1, 76, 0, 254, 0, 76, 0, 255, 0, 76, 5, 254, 0, 76, 5, 255, 1, 76, 6, 254, 0, 76, 6, 255, 1, 77, 0, 256, 0, 77, 0, 257, 0, 77, 5, 256, 0, 77, 5, 257, 1, 77, 6, 256, 0, 77, 6, 257, 1, 78, 0, 258, 0, 78, 0, 259, 0, 78, 5, 258, 0, 78, 5, 259, 1, 78, 8, 258, 0, 78, 8, 259, 3, 79, 13, 260, 0, 80, 0, 261, 0, 80, 0, 262, 0, 80, 5, 261, 0, 80, 5, 262, 1, 80, 8, 261, 0, 80, 8, 262, 3, 81, 11, 263, 0, 81, 11, 264, 3, 82, 12, 265, 0, 82, 12, 266, 1, 83, 0, 267, 0, 83, 0, 268, 0, 83, 5, 267, 0, 83, 5, 268, 1, 83, 6, 267, 0, 83, 6, 268, 1, 84, 12, 269, 0, 84, 12, 270, 1, 85, 0, 271, 0, 85, 0, 272, 0, 85, 5, 271, 0, 85, 5, 272, 1, 85, 6, 271, 0, 85, 6, 272, 1, 86, 14, 273, 2, 87, 0, 274, 0, 87, 0, 275, 0, 87, 5, 274, 0, 87, 5, 275, 1, 87, 8, 274, 0, 87, 8, 275, 3, 88, 0, 276, 0, 88, 0, 277, 0, 88, 5, 276, 0, 88, 5, 277, 1, 88, 8, 276, 0, 88, 8, 277, 3, 89, 0, 278, 0, 89, 0, 279, 0, 89, 5, 278, 0, 89, 5, 279, 1, 89, 8, 278, 0, 89, 8, 279, 3, 90, 0, 280, 0, 90, 0, 281, 0, 90, 5, 280, 0, 90, 5, 281, 1, 90, 8, 280, 0, 90, 8, 281, 3, 91, 15, 282, 0, 92, 2, 283, 0, 92, 2, 284, 0, 92, 2, 285, 0, 92, 2, 286, 0, 92, 2, 287, 0, 92, 2, 288, 1, 92, 2, 289, 1, 92, 2, 290, 1, 92, 2, 291, 1, 92, 2, 292, 1, 92, 2, 293, 1, 92, 2, 294, 1, 92, 2, 295, 1, 92, 2, 296, 1, 92, 2, 297, 1, 92, 2, 298, 1, 92, 2, 299, 1, 92, 2, 300, 1, 92, 2, 301, 1, 92, 2, 302, 1, 92, 2, 303, 1, 92, 2, 304, 1, 92, 2, 305, 1, 92, 2, 306, 1, 92, 2, 307, 1, 93, 1, 308, 0, 93, 1, 309, 0, 93, 1, 310, 0, 93, 1, 311, 0, 93, 1, 312, 0, 93, 1, 313, 0, 93, 1, 314, 0, 93, 1, 315, 0, 93, 1, 316, 0, 93, 1, 317, 0, 93, 1, 318, 0, 93, 1, 319, 0, 93, 1, 320, 0, 93, 1, 321, 0, 93, 1, 322, 0, 93, 1, 323, 0, 93, 1, 324, 0, 93, 1, 325, 0, 93, 1, 326, 0, 94, 0, 327, 0, 94, 0, 328, 0, 94, 5, 327, 0, 94, 5, 328, 1, 94, 6, 327, 0, 94, 6, 328, 1, 95, 0, 329, 0, 95, 0, 330, 0, 95, 5, 329, 0, 95, 5, 330, 1, 95, 8, 329, 0, 95, 8, 330, 3, 96, 17, 331, 0, 96, 17, 332, 0, 96, 17, 333, 1, 97, 0, 334, 0, 97, 0, 335, 0, 97, 5, 334, 0, 97, 5, 335, 1, 97, 6, 334, 0, 97, 6, 335, 1, 98, 0, 336, 0, 98, 0, 337, 0, 98, 5, 336, 0, 98, 5, 337, 1, 98, 8, 336, 0, 98, 8, 337, 3, 99, 0, 338, 0, 99, 0, 339, 0, 99, 5, 338, 0, 99, 5, 339, 1, 99, 8, 338, 0, 99, 8, 339, 3, 100, 2, 340, 0, 100, 2, 341, 0, 100, 2, 342, 0, 100, 2, 343, 0, 100, 2, 344, 0, 100, 2, 345, 0, 100, 2, 346, 0, 100, 2, 347, 0, 100, 2, 348, 0, 100, 2, 349, 0, 100, 2, 350, 0, 100, 2, 351, 0, 100, 2, 352, 0, 100, 2, 353, 0, 100, 2, 354, 0, 100, 2, 355, 0, 100, 2, 356, 0, 100, 2, 357, 0, 100, 2, 358, 0, 100, 2, 359, 0, 101, 2, 360, 1, 101, 2, 361, 1, 101, 2, 362, 1, 101, 2, 363, 1, 101, 2, 364, 1, 101, 2, 365, 1, 101, 2, 366, 1, 101, 2, 367, 1, 101, 2, 368, 1, 101, 2, 369, 1, 101, 2, 370, 1, 101, 2, 371, 1, 101, 2, 372, 1, 101, 2, 373, 1, 101, 2, 374, 1, 101, 2, 375, 1, 101, 2, 376, 1, 101, 2, 377, 1, 101, 2, 378, 1, 101, 2, 379, 1, 102, 0, 380, 0, 102, 0, 381, 0, 102, 5, 380, 0, 102, 5, 381, 1, 102, 6, 380, 0, 102, 6, 381, 1, 103, 0, 382, 0, 103, 0, 383, 0, 103, 5, 382, 0, 103, 5, 383, 1, 103, 6, 382, 0, 103, 6, 383, 1, 104, 0, 384, 0, 104, 0, 385, 0, 104, 5, 384, 0, 104, 5, 385, 1, 104, 8, 384, 0, 104, 8, 385, 3, 105, 0, 386, 0, 105, 0, 387, 0, 105, 8, 386, 0, 105, 8, 387, 3, 106, 0, 388, 0, 106, 0, 389, 0, 106, 8, 388, 0, 106, 8, 389, 3, 107, 0, 390, 0, 107, 0, 391, 0, 107, 8, 390, 0, 107, 8, 391, 3, 108, 0, 392, 0, 108, 0, 393, 0, 108, 8, 392, 0, 108, 8, 393, 3, 109, 0, 394, 0, 109, 0, 395, 0, 109, 8, 394, 0, 109, 8, 395, 3, 110, 0, 396, 0, 110, 0, 397, 0, 110, 8, 396, 0, 110, 8, 397, 3, 111, 0, 398, 0, 111, 0, 399, 0, 111, 8, 398, 0, 111, 8, 399, 3, 112, 0, 400, 0, 112, 0, 401, 0, 112, 8, 400, 0, 112, 8, 401, 3, 113, 0, 402, 0, 113, 0, 403, 0, 113, 18, 402, 0, 113, 18, 403, 3, 114, 0, 404, 0, 114, 0, 405, 0, 114, 18, 404, 0, 114, 18, 405, 3, 115, 0, 406, 0, 115, 0, 407, 0, 115, 18, 406, 0, 115, 18, 407, 3, 116, 0, 408, 0, 116, 0, 409, 0, 116, 18, 408, 0, 116, 18, 409, 3, 117, 0, 410, 0, 117, 0, 411, 0, 117, 18, 410, 0, 117, 18, 411, 3, 118, 0, 412, 0, 118, 0, 413, 0, 118, 18, 412, 0, 118, 18, 413, 3, 119, 0, 414, 0, 119, 0, 415, 0, 119, 5, 414, 0, 119, 5, 415, 1, 119, 8, 414, 0, 119, 8, 415, 3, 121, 20, 416, 0, 122, 2, 417, 0, 122, 2, 418, 0, 122, 2, 419, 0, 122, 2, 420, 0, 122, 2, 421, 0, 122, 2, 422, 0, 122, 2, 423, 0, 122, 2, 424, 0, 122, 2, 425, 0, 122, 2, 426, 0, 122, 2, 427, 0, 122, 2, 428, 0, 122, 2, 429, 0, 122, 2, 430, 0, 122, 2, 431, 0, 122, 2, 432, 0, 122, 2, 433, 0, 122, 2, 434, 0, 122, 2, 435, 0]);
MINL = 0;
MAXL = 3;
preschedule_op = [];
preschedule_cycle = [];
exrelated_p = [];
exrelated_q = [];
exrelated_rows = [];
exrelated_ext = array2d(1..0, 1..0, []);
bypass_table = array2d(1..0, 1..0, []);
adhoc = [1539, 1540];
temp_domain = array1d(0..210, [4..4, 5..5, 6..6, 25..25, 2..2, 16..16, 17..17, 18..18, 19..19, 20..20, 21..21, 22..22, 23..23, 53..53, 55..55, 57..57, 59..59, 61..61, 63..63, 0..0, 26..26, 27..27, 29..29, 31..31, -1..31 union 79..79, -1..31 union 80..81, -1..31 union 82..83, -1..31 union 84..84, -1..31 union 85..85, -1..-1 union 86..86, -1..-1 union 87..87, -1..-1 union 88..88, -1..-1 union 89..89, -1..-1 union 90..90, -1..-1 union 91..91, -1..-1 union 92..92, -1..-1 union 93..93, -1..-1 union 67..67, -1..-1 union 69..69, -1..-1 union 71..71, -1..-1 union 73..73, -1..-1 union 75..75, -1..-1 union 77..77, -1..31 union 94..96, -1..31, -1..31, 0..31, -1..31 union 97..98, -1..31, 0..31, -1..31 union 99..99, -1..31, 0..31, -1..31 union 100..100, -1..31, -1..31, 0..31, -1..31 union 101..101, -1..31, 0..31, -1..31 union 102..102, 0..31, -1..31 union 103..104, -1..31 union 103..104, -1..31, -1..31, 0..31, -1..31 union 105..106, -1..31, -1..31, 25..25, 31..31, -1..-1 union 5..6, -1..31, -1..-1 union 1..25 union 28..28 union 30..31, -1..31, -1..-1 union 5..6, 2..2, 1..1, 3..3, 4..4, 5..5, 6..6, 7..7, 8..8, 9..9, 10..10, 11..11, 12..12, 13..13, 14..14, 15..15, 24..24, 28..28, 30..30, 32..32, 33..33, -1..31 union 107..107, 0..31, -1..31 union 108..110, -1..-1 union 1..31, -1..31, -1..-1 union 1..25 union 28..28 union 30..31, -1..-1 union 1..25 union 28..28 union 30..31, -1..31, -1..31, -1..-1 union 1..25 union 28..28 union 30..31, 1..25 union 28..28 union 30..31 union 80..81, 1..25 union 28..28 union 30..31 union 82..83, 16..16 union 86..86, 17..17 union 87..87, 18..18 union 88..88, 19..19 union 89..89, 20..20 union 90..90, 21..21 union 91..91, 22..22 union 92..92, 23..23 union 93..93, 53..53 union 67..67, 55..55 union 69..69, 57..57 union 71..71, 59..59 union 73..73, 61..61 union 75..75, 63..63 union 77..77, 0..0, 26..26, 27..27, 29..29, 1..25 union 28..28 union 30..31 union 94..96, 1..25 union 28..28 union 30..31 union 97..98, 1..25 union 28..28 union 30..31 union 105..106, -1..31 union 80..81, -1..31 union 82..83, -1..31 union 94..96, -1..31 union 97..98, -1..31 union 105..106, -1..31, -1..31, 25..25, 0..31, -1..31 union 111..111, 0..31, -1..31 union 112..112, 31..31, -1..-1 union 7..7, -1..-1 union 4..4, -1..-1 union 5..5, -1..-1 union 6..6, 2..2, 1..1, 3..3, 4..4, 5..5, 6..6, 7..7, 8..8, 9..9, 10..10, 11..11, 12..12, 13..13, 14..14, 15..15, 24..24, 28..28, 30..30, 32..32, 33..33, -1..31 union 113..113, -1..-1 union 1..31, 0..31, -1..31 union 108..110, -1..-1 union 1..25 union 28..28 union 30..31, -1..-1 union 1..25 union 28..28 union 30..31, 1..25 union 28..28 union 30..31 union 108..110, 16..16 union 86..86, 17..17 union 87..87, 18..18 union 88..88, 19..19 union 89..89, 20..20 union 90..90, 21..21 union 91..91, 22..22 union 92..92, 23..23 union 93..93, 53..53 union 67..67, 55..55 union 69..69, 57..57 union 71..71, 59..59 union 73..73, 61..61 union 75..75, 63..63 union 77..77, 0..0, 26..26, 27..27, 29..29, 1..25 union 28..28 union 30..31 union 94..96, -1..31 union 108..110, -1..31 union 94..96, -1..31, -1..-1 union 16..16, -1..-1 union 17..17, -1..-1 union 18..18, -1..-1 union 19..19, -1..-1 union 20..20, -1..-1 union 21..21, -1..-1 union 22..22, -1..-1 union 23..23, -1..-1 union 53..53, -1..-1 union 55..55, -1..-1 union 57..57, -1..-1 union 59..59, -1..-1 union 61..61, -1..-1 union 63..63, -1..-1 union 2..2]);
wcet = array2d(1..275, 1..3, [0, 2, 1, 1, 3, 2, 2, 0, 0, 2, 4, 1, 3, 0, 0, 3, 5, 1, 3, 6, 1, 4, 0, 0, 4, 5, 1, 4, 6, 1, 5, 0, 0, 5, 5, 1, 5, 6, 1, 6, 0, 0, 6, 5, 1, 6, 6, 1, 7, 0, 0, 7, 5, 1, 7, 6, 1, 8, 0, 0, 8, 6, 1, 9, 0, 0, 9, 6, 1, 10, 0, 0, 10, 6, 1, 11, 0, 0, 11, 6, 1, 12, 0, 0, 12, 6, 1, 13, 0, 0, 13, 6, 1, 14, 0, 0, 14, 6, 1, 15, 0, 0, 15, 6, 1, 16, 0, 0, 16, 7, 1, 17, 0, 0, 17, 7, 1, 18, 0, 0, 18, 7, 1, 19, 0, 0, 19, 7, 1, 20, 0, 0, 20, 7, 1, 21, 0, 0, 21, 7, 1, 22, 0, 0, 22, 5, 1, 22, 6, 1, 23, 0, 0, 23, 5, 1, 23, 8, 3, 24, 0, 0, 24, 5, 1, 24, 8, 3, 25, 9, 1, 26, 0, 0, 26, 5, 1, 26, 6, 1, 27, 0, 0, 27, 5, 1, 27, 8, 3, 28, 10, 1, 29, 0, 0, 29, 5, 1, 29, 6, 1, 30, 0, 0, 30, 5, 1, 30, 8, 3, 31, 11, 3, 32, 0, 0, 32, 5, 1, 32, 6, 1, 33, 0, 0, 33, 5, 1, 33, 8, 3, 34, 0, 0, 34, 5, 1, 34, 8, 3, 35, 9, 1, 36, 0, 0, 36, 5, 1, 36, 6, 1, 37, 0, 0, 37, 5, 1, 37, 8, 3, 38, 11, 3, 39, 0, 0, 39, 5, 1, 39, 6, 1, 40, 12, 1, 41, 0, 0, 41, 5, 1, 41, 6, 1, 42, 0, 0, 42, 5, 1, 42, 6, 1, 43, 0, 0, 43, 5, 1, 43, 8, 3, 44, 0, 0, 44, 5, 1, 44, 8, 3, 45, 9, 1, 46, 0, 0, 46, 5, 1, 46, 6, 1, 47, 0, 0, 47, 5, 1, 47, 8, 3, 48, 13, 1, 49, 0, 0, 49, 5, 1, 49, 8, 3, 50, 11, 3, 51, 14, 2, 52, 0, 0, 52, 5, 1, 52, 8, 3, 53, 0, 0, 53, 5, 1, 53, 8, 3, 54, 0, 0, 54, 5, 1, 54, 8, 3, 55, 0, 0, 55, 5, 1, 55, 8, 3, 56, 0, 0, 56, 5, 1, 56, 8, 3, 57, 15, 1, 58, 2, 1, 59, 1, 0, 60, 0, 0, 60, 5, 1, 60, 6, 1, 61, 12, 1, 62, 0, 0, 62, 5, 1, 62, 6, 1, 63, 0, 0, 63, 5, 1, 63, 8, 3, 64, 0, 0, 64, 5, 1, 64, 8, 3, 65, 0, 0, 65, 5, 1, 65, 8, 3, 66, 0, 0, 66, 5, 1, 66, 8, 3, 67, 0, 0, 67, 5, 1, 67, 8, 3, 68, 0, 0, 68, 5, 1, 68, 8, 3, 69, 0, 0, 69, 5, 1, 69, 8, 3, 70, 16, 1, 71, 0, 0, 72, 2, 1, 73, 0, 0, 73, 5, 1, 73, 6, 1, 74, 0, 0, 74, 5, 1, 74, 6, 1, 75, 0, 0, 75, 5, 1, 75, 6, 1, 76, 0, 0, 76, 5, 1, 76, 6, 1, 77, 0, 0, 77, 5, 1, 77, 6, 1, 78, 0, 0, 78, 5, 1, 78, 8, 3, 79, 13, 1, 80, 0, 0, 80, 5, 1, 80, 8, 3, 81, 11, 3, 82, 12, 1, 83, 0, 0, 83, 5, 1, 83, 6, 1, 84, 12, 1, 85, 0, 0, 85, 5, 1, 85, 6, 1, 86, 14, 2, 87, 0, 0, 87, 5, 1, 87, 8, 3, 88, 0, 0, 88, 5, 1, 88, 8, 3, 89, 0, 0, 89, 5, 1, 89, 8, 3, 90, 0, 0, 90, 5, 1, 90, 8, 3, 91, 15, 1, 92, 2, 1, 93, 1, 0, 94, 0, 0, 94, 5, 1, 94, 6, 1, 95, 0, 0, 95, 5, 1, 95, 8, 3, 96, 17, 1, 97, 0, 0, 97, 5, 1, 97, 6, 1, 98, 0, 0, 98, 5, 1, 98, 8, 3, 99, 0, 0, 99, 5, 1, 99, 8, 3, 100, 0, 0, 101, 2, 1, 102, 0, 0, 102, 5, 1, 102, 6, 1, 103, 0, 0, 103, 5, 1, 103, 6, 1, 104, 0, 0, 104, 5, 1, 104, 8, 3, 105, 0, 0, 105, 8, 3, 106, 0, 0, 106, 8, 3, 107, 0, 0, 107, 8, 3, 108, 0, 0, 108, 8, 3, 109, 0, 0, 109, 8, 3, 110, 0, 0, 110, 8, 3, 111, 0, 0, 111, 8, 3, 112, 0, 0, 112, 8, 3, 113, 0, 0, 113, 18, 3, 114, 0, 0, 114, 18, 3, 115, 0, 0, 115, 18, 3, 116, 0, 0, 116, 18, 3, 117, 0, 0, 117, 18, 3, 118, 0, 0, 118, 18, 3, 119, 0, 0, 119, 5, 1, 119, 8, 3, 120, 0, 0, 120, 19, 1, 121, 20, 1, 122, 0, 0]);
expr_op = [1, 6, 6, 12, 1, 6, 1, 6, 6, 6, 12, 1, 6, 6, 12, 1, 6, 6, 1, 6, 6, 12, 1, 6, 1, 6, 6, 1, 6, 6, 12, 1, 6, 6, 12, 1, 6, 6, 1, 6, 6, 12, 1, 6, 6, 12, 1, 6, 12, 1, 6, 6, 12, 1, 6, 1, 6, 6, 12, 1, 6, 6, 12, 1, 6, 6, 12, 1, 6, 6, 12, 1, 6, 6, 12, 1, 6, 6, 12, 1, 1, 1, 6, 6, 12, 12, 1, 6, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 6, 12, 1, 6, 0, 1, 1, 6, 1, 6, 1, 0, 1, 6, 1, 0, 6, 1, 6, 1, 6, 6, 12, 1, 0, 1, 1, 1, 1, 1, 0, 1, 6, 1, 6, 1, 6, 1, 1, 0, 1, 1, 0, 6, 1, 6, 12, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 6, 1, 6, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 6, 6, 12, 1, 1, 0, 8, 3, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 1, 8, 3, 3, 3, 3, 3, 3, 3, 6, 3, 3, 3, 3, 6, 3, 6, 3, 1, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 3, 6, 3, 3, 6, 3, 6, 3, 6, 3, 1, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 3, 3, 3, 3, 3, 3, 6, 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, 3, 6, 3, 1, 6, 8, 3, 6, 3, 6, 3, 6, 3, 6, 3, 1, 8, 3, 3, 3, 3, 3, 6, 3, 6, 3, 1, 8, 3, 3, 3, 3, 3, 3, 3, 6, 3, 6, 3, 6, 3, 1, 8, 3, 3, 3, 3, 3, 3, 3, 3, 1, 8, 3, 3, 1, 8, 3, 3, 3, 1, 8, 3, 3, 3, 1, 8, 3, 3, 1, 8, 3, 3, 1, 8, 3, 3, 1, 6, 8, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 1, 8, 3, 3, 1, 6, 8, 3, 6, 3, 1, 8, 3, 3, 1, 6, 8, 3, 6, 3, 1, 6, 8, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 1, 8, 5, 4, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 7, 4, 0, 8, 5, 4, 7, 4, 0, 8, 7, 4, 0, 8, 5, 4, 7, 4, 0, 8, 7, 4, 0, 8, 5, 4, 7, 4, 0, 8, 7, 4, 0, 8, 5, 4, 7, 4, 0, 8, 7, 4, 0, 8, 5, 4, 7, 4, 0, 8, 7, 4, 0, 8, 5, 4, 7, 4, 0, 8, 7, 4, 0, 8, 5, 4, 7, 4, 0, 8, 7, 4, 0, 8, 5, 4, 7, 4, 0, 8, 7, 4, 0, 8, 5, 4, 7, 4, 0, 8, 7, 4, 0, 8, 5, 4, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 7, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 5, 4, 0, 8, 7, 4, 0, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 5, 8, 3, 8, 3, 5, 8, 3, 8, 3, 5, 8, 3, 8, 3, 5, 8, 3, 8, 3, 5, 8, 3, 8, 3, 8, 3, 8, 3, 5, 8, 3, 8, 3, 5, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 5, 8, 3, 8, 3, 8, 3, 5, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 6, 8, 3, 6, 8, 3, 6, 8, 3, 6, 8, 3, 6, 8, 3, 6, 8, 3, 8, 3, 8, 3, 6, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8];
expr_arg1 = [0, 68, 222, 46, 0, 69, 0, 79, 138, 222, 51, 0, 106, 201, 64, 0, 106, 137, 0, 111, 223, 66, 0, 111, 0, 111, 137, 0, 125, 201, 73, 0, 127, 202, 74, 0, 127, 134, 0, 187, 201, 101, 0, 189, 202, 102, 0, 221, 43, 0, 71, 222, 47, 0, 79, 0, 113, 223, 67, 0, 115, 223, 68, 0, 118, 222, 69, 0, 129, 222, 75, 0, 193, 222, 104, 0, 195, 223, 105, 0, 0, 0, 252, 358, 127, 132, 0, 358, 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 203, 29, 0, 203, 0, 204, 30, 0, 204, 0, 205, 31, 0, 205, 0, 206, 32, 0, 206, 0, 207, 33, 0, 207, 0, 208, 34, 0, 208, 0, 209, 35, 0, 209, 0, 210, 36, 0, 210, 0, 211, 37, 0, 211, 0, 212, 38, 0, 212, 0, 213, 39, 0, 213, 0, 214, 40, 0, 214, 0, 215, 41, 0, 215, 0, 216, 42, 0, 216, 0, 0, 0, 125, 0, 187, 0, 0, 0, 189, 0, 0, 69, 0, 68, 0, 191, 221, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 129, 0, 193, 0, 0, 0, 0, 0, 0, 110, 0, 110, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 358, 171, 0, 0, 0, 1, 191, 189, 75, 258, 81, 260, 81, 262, 89, 264, 90, 266, 0, 1, 191, 189, 258, 260, 262, 264, 266, 96, 277, 218, 24, 26, 117, 282, 117, 284, 0, 1, 191, 189, 258, 260, 262, 264, 266, 277, 218, 26, 282, 284, 120, 300, 120, 302, 120, 304, 134, 306, 135, 308, 135, 310, 136, 312, 136, 314, 136, 316, 27, 137, 319, 9, 138, 322, 138, 324, 138, 326, 0, 1, 191, 189, 258, 262, 264, 266, 277, 218, 282, 284, 302, 304, 310, 136, 343, 314, 316, 319, 322, 324, 326, 199, 351, 30, 41, 45, 108, 113, 118, 123, 128, 133, 138, 143, 148, 153, 158, 163, 168, 173, 194, 10, 66, 70, 74, 58, 62, 78, 224, 378, 0, 68, 1, 381, 69, 384, 75, 386, 89, 388, 90, 390, 0, 1, 381, 384, 386, 388, 390, 96, 399, 110, 401, 0, 1, 381, 384, 386, 388, 390, 399, 401, 135, 412, 199, 414, 224, 416, 0, 1, 381, 384, 386, 388, 390, 399, 401, 343, 0, 1, 24, 26, 0, 1, 300, 302, 304, 0, 25, 300, 302, 304, 0, 0, 308, 312, 0, 0, 412, 343, 0, 0, 310, 314, 0, 260, 72, 455, 260, 458, 263, 460, 263, 462, 283, 464, 283, 466, 284, 468, 285, 470, 286, 472, 286, 474, 0, 72, 460, 462, 0, 284, 72, 481, 285, 484, 0, 72, 84, 250, 0, 417, 101, 491, 417, 494, 0, 418, 101, 497, 419, 500, 420, 502, 421, 504, 422, 506, 423, 508, 424, 510, 425, 512, 426, 514, 427, 516, 428, 518, 429, 520, 430, 522, 431, 524, 0, 2, 2, 528, 3, 530, 0, 2, 4, 534, 0, 2, 5, 538, 0, 2, 6, 542, 0, 2, 7, 546, 0, 2, 8, 550, 0, 2, 9, 554, 0, 2, 10, 558, 0, 2, 11, 562, 0, 2, 12, 566, 0, 2, 13, 570, 0, 2, 14, 574, 0, 2, 15, 578, 0, 2, 16, 582, 0, 2, 17, 586, 0, 2, 18, 590, 0, 2, 19, 594, 0, 2, 20, 598, 0, 2, 21, 602, 0, 2, 22, 606, 0, 2, 23, 610, 0, 2, 24, 614, 0, 2, 26, 618, 0, 2, 27, 622, 0, 2, 29, 626, 0, 2, 30, 630, 0, 2, 32, 634, 0, 2, 33, 638, 0, 2, 34, 642, 0, 2, 36, 646, 0, 2, 37, 650, 0, 2, 39, 654, 0, 2, 41, 658, 0, 2, 42, 662, 0, 2, 43, 666, 0, 2, 44, 670, 0, 2, 46, 674, 0, 2, 47, 678, 0, 2, 49, 682, 0, 2, 52, 686, 0, 2, 53, 690, 0, 2, 54, 694, 0, 2, 55, 698, 0, 2, 56, 702, 0, 2, 60, 706, 0, 2, 62, 710, 0, 2, 63, 714, 0, 2, 64, 718, 0, 2, 65, 722, 0, 2, 66, 726, 0, 2, 67, 730, 0, 2, 68, 734, 0, 2, 69, 738, 0, 23, 23, 742, 0, 24, 24, 746, 0, 27, 27, 750, 0, 30, 30, 754, 0, 33, 33, 758, 0, 34, 34, 762, 0, 37, 37, 766, 0, 43, 43, 770, 0, 44, 44, 774, 0, 47, 47, 778, 0, 49, 49, 782, 0, 52, 52, 786, 0, 53, 53, 790, 0, 54, 54, 794, 0, 55, 55, 798, 0, 56, 56, 802, 0, 63, 63, 806, 0, 64, 64, 810, 0, 65, 65, 814, 0, 66, 66, 818, 0, 67, 67, 822, 0, 68, 68, 826, 0, 69, 69, 830, 0, 78, 78, 834, 78, 836, 0, 78, 78, 840, 0, 80, 80, 844, 80, 846, 0, 80, 80, 850, 0, 87, 87, 854, 87, 856, 0, 87, 87, 860, 0, 88, 88, 864, 88, 866, 0, 88, 88, 870, 0, 89, 89, 874, 89, 876, 0, 89, 89, 880, 0, 90, 90, 884, 90, 886, 0, 90, 90, 890, 0, 95, 95, 894, 95, 896, 0, 95, 95, 900, 0, 98, 98, 904, 98, 906, 0, 98, 98, 910, 0, 99, 99, 914, 99, 916, 0, 99, 99, 920, 0, 102, 102, 924, 120, 926, 0, 103, 103, 930, 0, 104, 104, 934, 0, 104, 104, 938, 0, 105, 105, 942, 0, 106, 106, 946, 0, 107, 107, 950, 0, 108, 108, 954, 0, 109, 109, 958, 0, 110, 110, 962, 0, 111, 111, 966, 0, 112, 112, 970, 0, 113, 113, 974, 0, 114, 114, 978, 0, 115, 115, 982, 0, 116, 116, 986, 0, 117, 117, 990, 0, 118, 118, 994, 0, 119, 119, 998, 0, 119, 119, 1002, 0, 1, 528, 2, 528, 2, 528, 1, 530, 3, 530, 1, 534, 4, 534, 1, 538, 5, 538, 1, 542, 6, 542, 1, 546, 7, 546, 1, 550, 8, 550, 1, 554, 9, 554, 1, 558, 10, 558, 1, 562, 11, 562, 1, 566, 12, 566, 1, 570, 13, 570, 1, 574, 14, 574, 1, 578, 15, 578, 1, 582, 16, 582, 1, 586, 17, 586, 1, 590, 18, 590, 1, 594, 19, 594, 1, 598, 20, 598, 1, 602, 21, 602, 1, 606, 22, 606, 1, 610, 23, 610, 1, 614, 24, 614, 1, 618, 26, 618, 1, 622, 27, 622, 1, 626, 29, 626, 1, 630, 30, 630, 1, 634, 32, 634, 1, 638, 33, 638, 1, 642, 34, 642, 1, 646, 36, 646, 1, 650, 37, 650, 1, 654, 39, 654, 1, 658, 41, 658, 1, 662, 42, 662, 1, 666, 43, 666, 1, 670, 44, 670, 1, 674, 46, 674, 1, 678, 47, 678, 1, 682, 49, 682, 1, 686, 52, 686, 1, 690, 53, 690, 1, 694, 54, 694, 1, 698, 55, 698, 1, 702, 56, 702, 1, 706, 60, 706, 1, 710, 62, 710, 1, 714, 63, 714, 1, 718, 64, 718, 1, 722, 65, 722, 1, 726, 66, 726, 1, 730, 67, 730, 1, 734, 68, 734, 1, 738, 69, 738, 73, 72, 1223, 73, 1223, 74, 72, 1228, 74, 1228, 75, 72, 1233, 75, 1233, 76, 72, 1238, 76, 1238, 77, 72, 1243, 77, 1243, 72, 834, 72, 844, 83, 72, 1252, 83, 1252, 85, 72, 1257, 85, 1257, 72, 854, 72, 864, 72, 874, 72, 884, 94, 72, 1270, 94, 1270, 72, 894, 97, 72, 1277, 97, 1277, 72, 904, 72, 914, 101, 924, 102, 924, 101, 930, 103, 930, 101, 934, 104, 934, 101, 942, 105, 942, 105, 942, 101, 946, 106, 946, 106, 946, 101, 950, 107, 950, 107, 950, 101, 954, 108, 954, 108, 954, 101, 958, 109, 958, 109, 958, 101, 962, 110, 962, 110, 962, 101, 966, 111, 966, 111, 966, 101, 970, 112, 970, 112, 970, 101, 974, 113, 974, 113, 974, 101, 978, 114, 978, 114, 978, 101, 982, 115, 982, 115, 982, 101, 986, 116, 986, 116, 986, 101, 990, 117, 990, 117, 990, 101, 994, 118, 994, 118, 994, 101, 998, 119, 998, 101, 926, 120, 926, 24, 3, 1390, 26, 4, 1393, 28, 5, 1396, 30, 6, 1399, 32, 7, 1402, 62, 22, 1405, 22, 1405, 25, 6, 75, 28, 1412, 43, 13, 45, 20, 53, 29, 54, 33, 0, 38, 0, 306, 1, 412, 40, 412, 40, 343, 0, 316, 64, 40, 65, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 25, 25, 25, 25, 28, 28, 31, 31, 31, 35, 35, 38, 38, 38, 40, 40, 45, 45, 45, 48, 48, 48, 50, 50, 50, 51, 51, 57, 57, 58, 58, 58, 59, 61, 61, 70, 71, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 79, 79, 81, 81, 82, 82, 84, 84, 86, 86, 91, 91, 92, 92, 92, 92, 93, 96, 101, 101, 121, 122, 58, 92];
expr_arg2 = [0, 4, 46, 0, 0, 3, 0, 47, 47, 51, 0, 0, 1, 64, 0, 0, 25, 25, 0, 1, 66, 0, 0, 25, 0, 64, 64, 0, 1, 73, 0, 0, 2, 74, 0, 0, 26, 26, 0, 1, 101, 0, 0, 2, 102, 0, 0, 43, 0, 0, 46, 47, 0, 0, 46, 0, 66, 67, 0, 0, 66, 68, 0, 0, 46, 69, 0, 0, 46, 75, 0, 0, 46, 104, 0, 0, 66, 105, 0, 0, 0, 0, 127, 132, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 5, 0, 30, 0, 0, 6, 0, 31, 0, 0, 7, 0, 32, 0, 0, 8, 0, 33, 0, 0, 9, 0, 34, 0, 0, 10, 0, 35, 0, 0, 11, 0, 36, 0, 0, 12, 0, 37, 0, 0, 13, 0, 38, 0, 0, 14, 0, 39, 0, 0, 15, 0, 40, 0, 0, 16, 0, 41, 0, 0, 17, 0, 42, 0, 0, 18, 0, 0, 0, 25, 0, 25, 0, 0, 0, 26, 0, 0, 27, 0, 28, 0, 43, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 47, 0, 47, 0, 0, 0, 0, 0, 0, 59, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 171, 0, 0, 0, 0, 35, 255, 255, 24, 255, 47, 255, 51, 255, 53, 255, 50, 255, 0, 48, 269, 269, 269, 269, 269, 269, 269, 57, 269, 269, 269, 269, 67, 269, 68, 269, 0, 58, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 47, 287, 51, 287, 69, 287, 74, 287, 62, 287, 72, 287, 62, 287, 72, 287, 76, 287, 287, 73, 287, 287, 51, 287, 69, 287, 75, 287, 0, 70, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 63, 329, 329, 329, 329, 329, 329, 329, 97, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 99, 329, 0, 45, 35, 382, 44, 382, 48, 382, 55, 382, 54, 382, 0, 48, 393, 393, 393, 393, 393, 58, 393, 65, 393, 0, 70, 404, 404, 404, 404, 404, 404, 404, 63, 404, 100, 404, 106, 404, 0, 58, 419, 419, 419, 419, 419, 419, 419, 419, 0, 45, 429, 429, 0, 50, 433, 433, 433, 0, 50, 438, 438, 438, 0, 41, 443, 443, 0, 42, 447, 447, 0, 52, 451, 451, 0, 134, 92, 456, 135, 456, 133, 456, 136, 456, 131, 456, 144, 456, 139, 456, 141, 456, 130, 456, 143, 456, 0, 81, 477, 477, 0, 145, 92, 482, 146, 482, 0, 100, 487, 487, 0, 193, 121, 492, 210, 492, 0, 196, 122, 498, 197, 498, 198, 498, 199, 498, 200, 498, 201, 498, 202, 498, 203, 498, 204, 498, 205, 498, 206, 498, 207, 498, 208, 498, 209, 498, 0, 3, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 39, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 49, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 60, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 70, 8, 0, 0, 100, 0, 0, 5, 0, 0, 100, 8, 0, 0, 100, 0, 0, 5, 0, 0, 100, 8, 0, 0, 100, 0, 0, 5, 0, 0, 100, 8, 0, 0, 100, 0, 0, 5, 0, 0, 100, 8, 0, 0, 100, 0, 0, 5, 0, 0, 100, 8, 0, 0, 100, 0, 0, 5, 0, 0, 100, 8, 0, 0, 100, 0, 0, 5, 0, 0, 100, 8, 0, 0, 100, 0, 0, 5, 0, 0, 100, 8, 0, 0, 100, 0, 0, 5, 0, 0, 100, 8, 0, 0, 120, 0, 0, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 121, 8, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 121, 8, 0, 0, 2, 1005, 48, 1007, 70, 1009, 3, 1011, 70, 1013, 4, 1015, 70, 1017, 5, 1019, 70, 1021, 6, 1023, 70, 1025, 7, 1027, 70, 1029, 8, 1031, 70, 1033, 9, 1035, 70, 1037, 10, 1039, 70, 1041, 11, 1043, 70, 1045, 12, 1047, 70, 1049, 13, 1051, 70, 1053, 14, 1055, 70, 1057, 15, 1059, 70, 1061, 16, 1063, 70, 1065, 17, 1067, 70, 1069, 18, 1071, 70, 1073, 19, 1075, 70, 1077, 20, 1079, 70, 1081, 21, 1083, 70, 1085, 22, 1087, 70, 1089, 23, 1091, 70, 1093, 24, 1095, 70, 1097, 26, 1099, 70, 1101, 27, 1103, 70, 1105, 29, 1107, 70, 1109, 30, 1111, 70, 1113, 32, 1115, 70, 1117, 33, 1119, 70, 1121, 34, 1123, 70, 1125, 36, 1127, 70, 1129, 37, 1131, 70, 1133, 39, 1135, 70, 1137, 41, 1139, 70, 1141, 42, 1143, 70, 1145, 43, 1147, 70, 1149, 44, 1151, 70, 1153, 46, 1155, 70, 1157, 47, 1159, 70, 1161, 49, 1163, 70, 1165, 52, 1167, 70, 1169, 53, 1171, 70, 1173, 54, 1175, 70, 1177, 55, 1179, 70, 1181, 56, 1183, 70, 1185, 60, 1187, 70, 1189, 62, 1191, 70, 1193, 63, 1195, 70, 1197, 64, 1199, 70, 1201, 65, 1203, 70, 1205, 66, 1207, 70, 1209, 67, 1211, 70, 1213, 68, 1215, 70, 1217, 69, 1219, 70, 1221, 0, 73, 1224, 100, 1226, 0, 74, 1229, 100, 1231, 0, 75, 1234, 100, 1236, 0, 76, 1239, 100, 1241, 0, 77, 1244, 100, 1246, 78, 1248, 80, 1250, 0, 83, 1253, 100, 1255, 0, 85, 1258, 100, 1260, 87, 1262, 88, 1264, 89, 1266, 90, 1268, 0, 94, 1271, 100, 1273, 95, 1275, 0, 97, 1278, 100, 1280, 98, 1282, 99, 1284, 102, 1286, 121, 1288, 103, 1290, 121, 1292, 104, 1294, 121, 1296, 105, 1298, 121, 1300, 121, 1302, 106, 1304, 121, 1306, 121, 1308, 107, 1310, 121, 1312, 121, 1314, 108, 1316, 121, 1318, 121, 1320, 109, 1322, 121, 1324, 121, 1326, 110, 1328, 121, 1330, 121, 1332, 111, 1334, 121, 1336, 121, 1338, 112, 1340, 121, 1342, 121, 1344, 113, 1346, 121, 1348, 121, 1350, 114, 1352, 121, 1354, 121, 1356, 115, 1358, 121, 1360, 121, 1362, 116, 1364, 121, 1366, 121, 1368, 117, 1370, 121, 1372, 121, 1374, 118, 1376, 121, 1378, 121, 1380, 119, 1382, 121, 1384, 120, 1386, 121, 1388, 0, 58, 1391, 1, 58, 1394, 2, 58, 1397, 3, 57, 1400, 4, 58, 1403, 23, 51, 1406, 58, 1408, 57, 1410, 0, 58, 1413, 58, 1415, 58, 1417, 58, 1419, 58, 1421, 5, 1423, 54, 1425, 58, 1427, 58, 1429, 58, 1431, 56, 1433, 58, 1435, 58, 1437, 1, 25, 28, 40, 45, 50, 51, 57, 58, 59, 61, 70, 71, 25, 28, 31, 35, 35, 38, 40, 45, 48, 48, 50, 51, 57, 58, 61, 70, 70, 31, 50, 58, 70, 71, 35, 70, 35, 48, 70, 38, 70, 45, 48, 70, 58, 70, 48, 70, 71, 50, 58, 70, 57, 58, 70, 58, 70, 58, 70, 57, 59, 70, 71, 70, 71, 71, 70, 79, 81, 82, 84, 86, 91, 92, 93, 96, 100, 81, 92, 91, 92, 92, 100, 92, 100, 92, 100, 92, 100, 91, 93, 96, 100, 100, 100, 121, 122, 122, 121, 51, 86];
expr_arg3 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 15, 0, 0, 0, 0, 11, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 24, 0, 4, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 7, 2, 2, 2, 2, 13, 2, 2, 2, 21, 2, 2, 26, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, -1, 1, 1, 0, 0, 1, 1, -1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, 0, 1, 1, 1, 1, -1, -2, -2];
expr_children = [{}, {}, {}, {}, 2..4, {}, 3..4 union 6..6, {}, {}, {}, {}, 8..11, {}, {}, {}, 13..15, {}, {}, 14..15 union 17..18, {}, {}, {}, 20..22, {}, 18..18 union 21..22 union 24..24, {}, {}, 21..22 union 26..27, {}, {}, {}, 29..31, {}, {}, {}, 33..35, {}, {}, 34..35 union 37..38, {}, {}, {}, 40..42, {}, {}, {}, 44..46, {}, {}, 48..49, {}, {}, {}, 4..4 union 51..53, {}, 4..4 union 10..11 union 55..55, {}, {}, {}, 22..22 union 57..59, {}, {}, {}, 22..22 union 61..63, {}, {}, {}, 4..4 union 65..67, {}, {}, {}, 4..4 union 69..71, {}, {}, {}, 4..4 union 73..75, {}, {}, {}, 22..22 union 77..79, 3..4, 21..22, {}, {}, {}, {}, 83..86, {}, 85..85 union 88..88, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 108..109, {}, 110..111, {}, {}, 113..114, {}, 115..116, {}, {}, 118..119, {}, 120..121, {}, {}, 123..124, {}, 125..126, {}, {}, 128..129, {}, 130..131, {}, {}, 133..134, {}, 135..136, {}, {}, 138..139, {}, 140..141, {}, {}, 143..144, {}, 145..146, {}, {}, 148..149, {}, 150..151, {}, {}, 153..154, {}, 155..156, {}, {}, 158..159, {}, 160..161, {}, {}, 163..164, {}, 165..166, {}, {}, 168..169, {}, 170..171, {}, {}, 173..174, {}, 175..176, 14..15 union 17..17, 21..22 union 24..24, {}, 30..31 union 180..180, {}, 41..42 union 182..182, 178..179 union 181..181 union 183..183, 34..35 union 37..37, {}, 45..46 union 186..186, 185..185 union 187..187, {}, 3..4 union 189..189, {}, 3..4 union 191..191, {}, {}, {}, 193..195, 48..48 union 196..196, 10..11 union 55..55, 65..67, 69..71, 73..75, 52..53, 3..3 union 198..202, 4..4 union 8..8 union 10..11, {}, 4..4 union 66..67 union 205..205, {}, 4..4 union 70..71 union 207..207, {}, 4..4 union 74..75 union 209..209, 4..4 union 52..52, 204..204 union 206..206 union 208..208 union 210..211, 4..4 union 10..10 union 55..55, 8..10, 213..214, {}, 21..22 union 216..216, {}, {}, 21..22 union 218..219, 13..13 union 21..22 union 26..26, 13..14, 17..18 union 21..22 union 26..26, 14..14 union 17..18, 221..224, 61..63, 77..79, 58..59, 21..21 union 226..228, {}, 22..22 union 62..63 union 230..230, {}, 22..22 union 78..79 union 232..232, 22..22 union 58..58, 231..231 union 233..234, 22..22 union 61..62, 4..4 union 65..66, 29..30, 33..34, 34..34 union 37..38, 239..240, 4..4 union 69..70, 40..41, 44..45, 4..4 union 73..74, 22..22 union 77..78, 84..84 union 86..86, 88..88 union 247..247, {}, {}, {}, 85..85 union 249..251, 84..85, 252..253, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 256..257 union 259..259 union 261..261 union 263..263 union 265..265 union 267..267, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 270..276 union 278..281 union 283..283 union 285..285, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 288..299 union 301..301 union 303..303 union 305..305 union 307..307 union 309..309 union 311..311 union 313..313 union 315..315 union 317..318 union 320..321 union 323..323 union 325..325 union 327..327, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 330..342 union 344..350 union 352..377 union 379..379, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 383..383 union 385..385 union 387..387 union 389..389 union 391..391, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 394..398 union 400..400 union 402..402, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 405..411 union 413..413 union 415..415 union 417..417, {}, {}, {}, {}, {}, {}, {}, {}, {}, 420..427, {}, {}, {}, 430..431, {}, {}, {}, {}, 434..436, {}, {}, {}, {}, 439..441, {}, {}, {}, 444..445, {}, {}, {}, 448..449, {}, {}, {}, 452..453, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 457..457 union 459..459 union 461..461 union 463..463 union 465..465 union 467..467 union 469..469 union 471..471 union 473..473 union 475..475, {}, {}, {}, 478..479, {}, {}, {}, {}, {}, 483..483 union 485..485, {}, {}, {}, 488..489, {}, {}, {}, {}, {}, 493..493 union 495..495, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 499..499 union 501..501 union 503..503 union 505..505 union 507..507 union 509..509 union 511..511 union 513..513 union 515..515 union 517..517 union 519..519 union 521..521 union 523..523 union 525..525, {}, {}, {}, {}, {}, 527..527 union 529..529 union 531..531, {}, {}, {}, 529..529 union 533..533 union 535..535, {}, {}, {}, 529..529 union 537..537 union 539..539, {}, {}, {}, 529..529 union 541..541 union 543..543, {}, {}, {}, 529..529 union 545..545 union 547..547, {}, {}, {}, 529..529 union 549..549 union 551..551, {}, {}, {}, 529..529 union 553..553 union 555..555, {}, {}, {}, 529..529 union 557..557 union 559..559, {}, {}, {}, 529..529 union 561..561 union 563..563, {}, {}, {}, 529..529 union 565..565 union 567..567, {}, {}, {}, 529..529 union 569..569 union 571..571, {}, {}, {}, 529..529 union 573..573 union 575..575, {}, {}, {}, 529..529 union 577..577 union 579..579, {}, {}, {}, 529..529 union 581..581 union 583..583, {}, {}, {}, 529..529 union 585..585 union 587..587, {}, {}, {}, 529..529 union 589..589 union 591..591, {}, {}, {}, 529..529 union 593..593 union 595..595, {}, {}, {}, 529..529 union 597..597 union 599..599, {}, {}, {}, 529..529 union 601..601 union 603..603, {}, {}, {}, 529..529 union 605..605 union 607..607, {}, {}, {}, 529..529 union 609..609 union 611..611, {}, {}, {}, 529..529 union 613..613 union 615..615, {}, {}, {}, 529..529 union 617..617 union 619..619, {}, {}, {}, 529..529 union 621..621 union 623..623, {}, {}, {}, 529..529 union 625..625 union 627..627, {}, {}, {}, 529..529 union 629..629 union 631..631, {}, {}, {}, 529..529 union 633..633 union 635..635, {}, {}, {}, 529..529 union 637..637 union 639..639, {}, {}, {}, 529..529 union 641..641 union 643..643, {}, {}, {}, 529..529 union 645..645 union 647..647, {}, {}, {}, 529..529 union 649..649 union 651..651, {}, {}, {}, 529..529 union 653..653 union 655..655, {}, {}, {}, 529..529 union 657..657 union 659..659, {}, {}, {}, 529..529 union 661..661 union 663..663, {}, {}, {}, 529..529 union 665..665 union 667..667, {}, {}, {}, 529..529 union 669..669 union 671..671, {}, {}, {}, 529..529 union 673..673 union 675..675, {}, {}, {}, 529..529 union 677..677 union 679..679, {}, {}, {}, 529..529 union 681..681 union 683..683, {}, {}, {}, 529..529 union 685..685 union 687..687, {}, {}, {}, 529..529 union 689..689 union 691..691, {}, {}, {}, 529..529 union 693..693 union 695..695, {}, {}, {}, 529..529 union 697..697 union 699..699, {}, {}, {}, 529..529 union 701..701 union 703..703, {}, {}, {}, 529..529 union 705..705 union 707..707, {}, {}, {}, 529..529 union 709..709 union 711..711, {}, {}, {}, 529..529 union 713..713 union 715..715, {}, {}, {}, 529..529 union 717..717 union 719..719, {}, {}, {}, 529..529 union 721..721 union 723..723, {}, {}, {}, 529..529 union 725..725 union 727..727, {}, {}, {}, 529..529 union 729..729 union 731..731, {}, {}, {}, 529..529 union 733..733 union 735..735, {}, {}, {}, 529..529 union 737..737 union 739..739, {}, {}, {}, 611..611 union 741..741 union 743..743, {}, {}, {}, 615..615 union 745..745 union 747..747, {}, {}, {}, 623..623 union 749..749 union 751..751, {}, {}, {}, 631..631 union 753..753 union 755..755, {}, {}, {}, 639..639 union 757..757 union 759..759, {}, {}, {}, 643..643 union 761..761 union 763..763, {}, {}, {}, 651..651 union 765..765 union 767..767, {}, {}, {}, 667..667 union 769..769 union 771..771, {}, {}, {}, 671..671 union 773..773 union 775..775, {}, {}, {}, 679..679 union 777..777 union 779..779, {}, {}, {}, 683..683 union 781..781 union 783..783, {}, {}, {}, 687..687 union 785..785 union 787..787, {}, {}, {}, 691..691 union 789..789 union 791..791, {}, {}, {}, 695..695 union 793..793 union 795..795, {}, {}, {}, 699..699 union 797..797 union 799..799, {}, {}, {}, 703..703 union 801..801 union 803..803, {}, {}, {}, 715..715 union 805..805 union 807..807, {}, {}, {}, 719..719 union 809..809 union 811..811, {}, {}, {}, 723..723 union 813..813 union 815..815, {}, {}, {}, 727..727 union 817..817 union 819..819, {}, {}, {}, 731..731 union 821..821 union 823..823, {}, {}, {}, 735..735 union 825..825 union 827..827, {}, {}, {}, 739..739 union 829..829 union 831..831, {}, {}, {}, {}, {}, 833..833 union 835..835 union 837..837, {}, {}, {}, 835..835 union 839..839 union 841..841, {}, {}, {}, {}, {}, 843..843 union 845..845 union 847..847, {}, {}, {}, 845..845 union 849..849 union 851..851, {}, {}, {}, {}, {}, 853..853 union 855..855 union 857..857, {}, {}, {}, 855..855 union 859..859 union 861..861, {}, {}, {}, {}, {}, 863..863 union 865..865 union 867..867, {}, {}, {}, 865..865 union 869..869 union 871..871, {}, {}, {}, {}, {}, 873..873 union 875..875 union 877..877, {}, {}, {}, 875..875 union 879..879 union 881..881, {}, {}, {}, {}, {}, 883..883 union 885..885 union 887..887, {}, {}, {}, 885..885 union 889..889 union 891..891, {}, {}, {}, {}, {}, 893..893 union 895..895 union 897..897, {}, {}, {}, 895..895 union 899..899 union 901..901, {}, {}, {}, {}, {}, 903..903 union 905..905 union 907..907, {}, {}, {}, 905..905 union 909..909 union 911..911, {}, {}, {}, {}, {}, 913..913 union 915..915 union 917..917, {}, {}, {}, 915..915 union 919..919 union 921..921, {}, {}, {}, {}, {}, 923..923 union 925..925 union 927..927, {}, {}, {}, 927..927 union 929..929 union 931..931, {}, {}, {}, 927..927 union 933..933 union 935..935, {}, {}, {}, 935..935 union 937..937 union 939..939, {}, {}, {}, 927..927 union 941..941 union 943..943, {}, {}, {}, 927..927 union 945..945 union 947..947, {}, {}, {}, 927..927 union 949..949 union 951..951, {}, {}, {}, 927..927 union 953..953 union 955..955, {}, {}, {}, 927..927 union 957..957 union 959..959, {}, {}, {}, 927..927 union 961..961 union 963..963, {}, {}, {}, 927..927 union 965..965 union 967..967, {}, {}, {}, 927..927 union 969..969 union 971..971, {}, {}, {}, 927..927 union 973..973 union 975..975, {}, {}, {}, 927..927 union 977..977 union 979..979, {}, {}, {}, 927..927 union 981..981 union 983..983, {}, {}, {}, 927..927 union 985..985 union 987..987, {}, {}, {}, 927..927 union 989..989 union 991..991, {}, {}, {}, 927..927 union 993..993 union 995..995, {}, {}, {}, 927..927 union 997..997 union 999..999, {}, {}, {}, 999..999 union 1001..1001 union 1003..1003, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}];
sets = [1..1 union 25..25 union 64..64 union 73..73 union 101..101, 2..2 union 26..26 union 74..74 union 102..102, 5..5 union 29..29, 6..6 union 30..30, 7..7 union 31..31, 8..8 union 32..32, 9..9 union 33..33, 10..10 union 34..34, 11..11 union 35..35, 12..12 union 36..36, 13..13 union 37..37, 14..14 union 38..38, 15..15 union 39..39, 16..16 union 40..40, 17..17 union 41..41, 18..18 union 42..42, 19..19, 20..20, 21..21, 22..22, 23..23 union 43..43 union 103..103, 46..47 union 51..51 union 69..69 union 75..75 union 104..104, 66..68 union 105..105, 109..109, 110..110, 111..111, 112..112, 113..113, 114..114, 115..115, 116..116, 117..117, 118..118, 119..119, 120..120, 121..121, 122..122, 123..123, 124..124, 125..125, 126..126, 127..127 union 132..132 union 171..171];