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/mznc2020/code-generator/mips_gobmk.patterns.autohelperpat508.dzn

119 lines
101 KiB
MiniZinc

MAXF = 2147483646;
MAXO = 91;
MAXP = 255;
MAXT = 123;
MAXI = 18;
MAXC = 221;
MAXR = 450;
optimize_cycles = true;
bb_ops = [0..91];
bb_operands = [0..255];
bb_temps = [0..123];
bb_subsumed = [5..5];
bb_frequency = [1];
bb_maxcycle = [221];
bb_optional_min = [5];
bb_order = [1];
op_operands = array1d(0..91, [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..111, 112..113, 114..115, 116..117, 118..120, 121..122, 123..124, 125..125, 126..127, 128..129, 130..132, 133..134, 135..136, 137..137, 138..139, 140..140, 141..142, 143..144, 145..145, 146..147, 148..149, 150..151, 152..153, 154..155, 156..156, 157..182, 183..201, 202..203, 204..205, 206..207, 208..209, 210..211, 212..213, 214..215, 216..217, 218..219, 220..221, 222..223, 224..225, 226..227, 228..229, 230..231, 232..233, 234..235, {}, 236..236, 237..255]);
op_instructions = array1d(0..91, [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, 0..0 union 5..5 union 8..8, 11..11, 0..0 union 5..6, 12..12, 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, 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, 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, 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, 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 16..16, 0..0 union 16..16, 0..0 union 16..16, 0..0 union 16..16, 0..0 union 16..16, 0..0 union 16..16, 0..0 union 5..5 union 8..8, 0..0 union 17..17, 18..18, 2..2]);
op_type = array1d(0..91, [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, 14, 0, 14, 0, 14, 0, 14, 14, 14, 0, 14, 14, 0, 14, 14, 0, 14, 14, 0, 14, 0, 14, 0, 0, 14, 14, 14, 14, 14, 2, 13, 6, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 1, 5]);
op_mand = array1d(0..91, [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, false, true, false, true, false, true, false, false, false, true, false, false, true, false, false, true, false, false, true, false, true, false, true, true, false, false, false, false, false, true, true, true, 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..450, 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..258, 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, 259..450, 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 union 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]);
calleesaved = 16..23 union 53..64;
callersaved = 1..15 union 24..25 union 28..28 union 30..52;
infinite = 67..450;
range = [0..450, 0..31, 1..15, 24..25, 30..31, 32..32, 33..64, 33..52, 65..65, 66..66, 67..258, 259..450];
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..18, [0, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
res_dur = array2d(1..5, 0..18, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 3, 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]);
res_off = array2d(1..5, 0..18, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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]);
congr = [19..19 union 106..106 union 110..110 union 251..251, 20..20 union 252..252, 21..21 union 253..253, 22..22 union 254..254, 144..144 union 156..156, 145..145 union 162..162, 164..164 union 183..183, 165..165 union 184..184, 166..166 union 185..185, 167..167 union 186..186, 168..168 union 187..187, 169..169 union 188..188, 170..170 union 189..189, 171..171 union 190..190, 172..172 union 191..191, 173..173 union 192..192, 174..174 union 193..193, 175..175 union 194..194, 176..176 union 195..195, 177..177 union 196..196, 178..178 union 197..197, 179..179 union 198..198, 180..180 union 199..199, 181..181 union 200..200, 182..182 union 201..201];
strictly_congr = [0..0 union 157..157 union 166..166 union 185..185, 1..1 union 158..158 union 167..167 union 186..186, 2..2 union 159..159 union 168..168 union 187..187, 3..3 union 144..144 union 156..156, 4..4 union 163..163 union 255..255, 5..5 union 237..237, 6..6 union 238..238, 7..7 union 239..239, 8..8 union 240..240, 9..9 union 241..241, 10..10 union 242..242, 11..11 union 243..243, 12..12 union 244..244, 13..13 union 245..245, 14..14 union 246..246, 15..15 union 247..247, 16..16 union 248..248, 17..17 union 249..249, 18..18 union 250..250, 19..19 union 106..106 union 110..110 union 251..251, 20..20 union 252..252, 21..21 union 253..253, 22..22 union 254..254, 23..23 union 145..145 union 162..162, 160..160 union 169..169 union 188..188, 161..161 union 179..179 union 198..198, 164..164 union 183..183, 165..165 union 184..184, 170..170 union 189..189, 171..171 union 190..190, 172..172 union 191..191, 173..173 union 192..192, 174..174 union 193..193, 175..175 union 194..194, 176..176 union 195..195, 177..177 union 196..196, 178..178 union 197..197, 180..180 union 199..199, 181..181 union 200..200, 182..182 union 201..201];
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, 145, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255];
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, 16, 17, 18, 19, 20, 21, 22, 23, 53, 55, 57, 59, 61, 63, 0, 26, 27, 29, 2];
aligned_def = [];
aligned_use = [];
aligned_defi = [];
aligned_usei = [];
aligned_dist = [];
adj_from = [];
adj_to = [];
quasi_adj_from = [];
quasi_adj_to = [];
long_latency_index = array2d(1..0, 1..0, []);
long_latency_def = array1d(0..14, [207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233, 235]);
long_latency_use = array1d(0..14, [237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 255]);
operand_definer = array1d(0..255, [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, 46, 46, 47, 47, 48, 48, 49, 49, 49, 50, 50, 51, 51, 52, 53, 53, 54, 54, 55, 55, 55, 56, 56, 57, 57, 58, 59, 59, 60, 61, 61, 62, 62, 63, 64, 64, 65, 65, 66, 66, 67, 67, 68, 68, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 88, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91]);
operand_use = array1d(0..255, [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, false, true, false, true, false, true, false, true, true, false, true, false, true, false, true, true, false, true, false, true, true, false, true, false, true, false, true, 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, 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..255, [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, 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, false, false, false, false, true, false, false, false, false, true, 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, 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, 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..255, [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 79..79 union 84..84, 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 union 61..61, 59..59, -1..-1 union 59..59, -1..-1 union 60..60, -1..-1 union 56..57, -1..-1 union 61..61, 56..58 union 61..61, 62..62, -1..-1 union 62..62, -1..-1 union 63..63, 19..19, 64..64, -1..-1 union 64..64, -1..-1 union 65..65, 19..19, 66..66, -1..-1 union 66..66, -1..-1 union 67..67, -1..-1 union 1..1 union 25..25, -1..-1 union 68..68, -1..-1 union 62..63, -1..-1 union 69..69, 62..63 union 69..69, 1..1 union 25..25 union 68..68 union 73..73 union 82..82, 70..70, -1..-1 union 70..70, -1..-1 union 71..71, -1..-1 union 70..71, -1..-1 union 72..72, 70..72, -1..-1 union 1..1 union 25..25, -1..-1 union 73..73, -1..-1 union 59..60, -1..-1 union 74..74, 59..60 union 74..74, 1..1 union 25..25 union 68..68 union 73..73 union 82..82, 75..75, -1..-1 union 75..75, -1..-1 union 76..76, -1..-1 union 75..76, -1..-1 union 77..77, 75..78, -1..-1 union 75..76, -1..-1 union 78..78, 75..78, -1..-1 union 46..47, -1..-1 union 79..79, 46..47 union 51..51 union 79..79 union 84..84, 80..80, 81..81, -1..-1 union 1..1 union 25..25, -1..-1 union 82..82, -1..-1 union 2..2 union 26..26, -1..-1 union 83..83, -1..-1 union 46..47, -1..-1 union 84..84, -1..-1 union 64..65, -1..-1 union 85..85, -1..-1 union 66..67, -1..-1 union 86..86, 80..80, 2..2 union 26..26 union 83..83, 64..65 union 85..85, 66..67 union 86..86, 1..1 union 25..25 union 68..68 union 73..73 union 82..82, 46..47 union 51..51 union 79..79 union 84..84, 81..81, 87..87, 88..88, 89..89, 90..90, 91..91, 92..92, 93..93, 94..94, 95..95, 96..96, 97..97, 98..98, 99..99, 100..100, 101..101, 102..102, 103..103, 104..104, 105..105, 106..106, 88..88, 89..89, 90..90, 91..91, 92..92, 93..93, 94..94, 95..95, 96..96, 97..97, 98..98, 99..99, 100..100, 101..101, 102..102, 103..103, 104..104, 105..105, 106..106, -1..-1 union 87..87, -1..-1 union 107..107, -1..-1 union 23..23 union 43..43, -1..-1 union 108..108, -1..-1 union 5..5 union 29..29, -1..-1 union 109..109, -1..-1 union 6..6 union 30..30, -1..-1 union 110..110, -1..-1 union 7..7 union 31..31, -1..-1 union 111..111, -1..-1 union 8..8 union 32..32, -1..-1 union 112..112, -1..-1 union 9..9 union 33..33, -1..-1 union 113..113, -1..-1 union 10..10 union 34..34, -1..-1 union 114..114, -1..-1 union 11..11 union 35..35, -1..-1 union 115..115, -1..-1 union 12..12 union 36..36, -1..-1 union 116..116, -1..-1 union 13..13 union 37..37, -1..-1 union 117..117, -1..-1 union 14..14 union 38..38, -1..-1 union 118..118, -1..-1 union 15..15 union 39..39, -1..-1 union 119..119, -1..-1 union 16..16 union 40..40, -1..-1 union 120..120, -1..-1 union 17..17 union 41..41, -1..-1 union 121..121, -1..-1 union 18..18 union 42..42, -1..-1 union 122..122, -1..-1 union 87..87 union 107..107, -1..-1 union 123..123, 23..23 union 43..43 union 108..108, 5..5 union 29..29 union 109..109, 6..6 union 30..30 union 110..110, 7..7 union 31..31 union 111..111, 8..8 union 32..32 union 112..112, 9..9 union 33..33 union 113..113, 10..10 union 34..34 union 114..114, 11..11 union 35..35 union 115..115, 12..12 union 36..36 union 116..116, 13..13 union 37..37 union 117..117, 14..14 union 38..38 union 118..118, 15..15 union 39..39 union 119..119, 16..16 union 40..40 union 120..120, 17..17 union 41..41 union 121..121, 18..18 union 42..42 union 122..122, 19..19, 20..20, 21..21, 22..22, 87..87 union 107..107 union 123..123]);
operand_atom = array2d(0..255, 0..18, [-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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0, -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, 0, -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, 0, -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, 0, -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, 0, -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, 0, -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, 0, -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, 0, -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, 0, -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, 0, -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, 0, -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, 0, -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, 9, -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, 0, -1, -1, -1, -1, -1, -1, 9, -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, 0, -1, -1, -1, -1, -1, -1, 9, -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, 0, -1, -1, -1, -1, -1, -1, 9, -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, 0, -1, -1, -1, -1, -1, -1, 9, -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, 0, -1, -1, -1, -1, -1, -1, 9, -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, 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, 14, -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, 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, 14, -1, -1, -1, -1, -1, -1, -1, -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, 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, 14, -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, 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, 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, 14, -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, 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, 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, 14, -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, 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, 14, -1, -1, -1, -1, -1, -1, -1, -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, 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, 14, -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, 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, 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, 14, -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, 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, 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, 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, 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, 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, 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, 14, -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, 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, 14, -1, -1, -1, -1, -1, -1, -1, -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, 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, 14, -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, 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, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -1, -1, -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, 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, 14, -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, 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, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -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, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -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, 0, -1, -1, -1, -1, 1, -1, -1, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -1, -1, -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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0, -1, -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, 14, -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, 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, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -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, 14, -1, -1, -1, -1, -1, -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, 15, -1, -1, 0, -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, 15, -1, -1, 0, -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, 15, -1, -1, 0, -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, 15, -1, -1, 0, -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, 15, -1, -1, 0, -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, 15, -1, -1, 0, -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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0, -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 68..68 union 73..73 union 82..82, 2..2 union 26..26 union 83..83, 3..3 union 27..27 union 44..44, 4..4 union 28..28 union 45..45, 5..5 union 29..29 union 109..109, 6..6 union 30..30 union 110..110, 7..7 union 31..31 union 111..111, 8..8 union 32..32 union 112..112, 9..9 union 33..33 union 113..113, 10..10 union 34..34 union 114..114, 11..11 union 35..35 union 115..115, 12..12 union 36..36 union 116..116, 13..13 union 37..37 union 117..117, 14..14 union 38..38 union 118..118, 15..15 union 39..39 union 119..119, 16..16 union 40..40 union 120..120, 17..17 union 41..41 union 121..121, 18..18 union 42..42 union 122..122, 23..23 union 43..43 union 108..108, 46..47 union 51..51 union 79..79 union 84..84, 49..50 union 54..54, 52..53 union 55..55, 56..58 union 61..61, 59..60 union 74..74, 62..63 union 69..69, 64..65 union 85..85, 66..67 union 86..86, 70..72, 75..78, 87..87 union 107..107 union 123..123];
temp_definer = array1d(0..123, [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, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 66, 67, 68, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88]);
temp_def = array1d(0..123, [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, 111, 113, 115, 117, 120, 122, 124, 127, 129, 132, 134, 136, 139, 142, 144, 145, 147, 149, 151, 153, 155, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233, 235]);
temp_width = array1d(0..123, [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, 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, 2, 2, 2, 2, 2, 2, 1]);
temp_minlive = array1d(0..123, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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..123, [24..24 union 73..73 union 75..75, 26..26 union 114..114 union 119..119 union 126..126 union 131..131 union 146..146 union 160..160, 28..28 union 148..148 union 157..157, 30..30 union 64..64 union 69..69, 32..32 union 66..66 union 68..68, 34..34 union 206..206 union 237..237, 36..36 union 208..208 union 238..238, 38..38 union 210..210 union 239..239, 40..40 union 212..212 union 240..240, 42..42 union 214..214 union 241..241, 44..44 union 216..216 union 242..242, 46..46 union 218..218 union 243..243, 48..48 union 220..220 union 244..244, 50..50 union 222..222 union 245..245, 52..52 union 224..224 union 246..246, 54..54 union 226..226 union 247..247, 56..56 union 228..228 union 248..248, 58..58 union 230..230 union 249..249, 60..60 union 232..232 union 250..250, 106..106 union 110..110 union 251..251, 252..252, 253..253, 254..254, 62..62 union 204..204 union 236..236, 73..73 union 75..75, 114..114 union 119..119 union 126..126 union 131..131 union 146..146 union 160..160, 148..148 union 157..157, 64..64 union 69..69, 66..66 union 68..68, 206..206 union 237..237, 208..208 union 238..238, 210..210 union 239..239, 212..212 union 240..240, 214..214 union 241..241, 216..216 union 242..242, 218..218 union 243..243, 220..220 union 244..244, 222..222 union 245..245, 224..224 union 246..246, 226..226 union 247..247, 228..228 union 248..248, 230..230 union 249..249, 232..232 union 250..250, 204..204 union 236..236, 69..69, 68..68, 71..71 union 79..79 union 81..81 union 141..141 union 143..143 union 150..150 union 161..161, 79..79 union 81..81 union 141..141 union 143..143 union 150..150 union 161..161, 75..75, 77..77 union 85..85 union 90..90, 85..85 union 90..90, 81..81 union 143..143 union 161..161, 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 union 100..100 union 102..102, 94..94 union 96..96 union 100..100 union 102..102, 96..96 union 102..102, 98..98 union 128..128 union 130..130, 128..128 union 130..130, 96..96 union 102..102, 104..104 union 116..116 union 118..118, 116..116 union 118..118, 108..108 union 152..152 union 158..158, 152..152 union 158..158, 112..112 union 154..154 union 159..159, 154..154 union 159..159, 119..119 union 131..131 union 160..160, 118..118, 121..121 union 123..123 union 125..125, 123..123 union 125..125, 125..125, 119..119 union 131..131 union 160..160, 130..130, 133..133 union 135..135 union 137..138 union 140..140, 135..135 union 137..138 union 140..140, 137..137 union 140..140, 137..137 union 140..140, 81..81 union 143..143 union 161..161, 156..156, 162..162, 119..119 union 131..131 union 160..160, 157..157, 81..81 union 143..143 union 161..161, 158..158, 159..159, 202..202 union 234..234 union 255..255, 183..183, 184..184, 185..185, 186..186, 187..187, 188..188, 189..189, 190..190, 191..191, 192..192, 193..193, 194..194, 195..195, 196..196, 197..197, 198..198, 199..199, 200..200, 201..201, 234..234 union 255..255, 236..236, 237..237, 238..238, 239..239, 240..240, 241..241, 242..242, 243..243, 244..244, 245..245, 246..246, 247..247, 248..248, 249..249, 250..250, 255..255]);
packed_pq = array2d(1..0, 1..0, []);
before_pred = [0, 1, 2, 3, 4, 4, 23, 23, 68, 69, 75, 89, 90, 118, 130, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 156, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162];
before_succ = [157, 158, 159, 156, 163, 255, 145, 162, 70, 70, 76, 91, 91, 120, 132, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 178, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182];
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];
nogood = [4];
across_op = [70];
across_regs = [{}];
across_items = [1..19];
across_item_temp = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 43];
across_item_cond = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 1, 1, 1, 1, 23];
setacross_op = [70];
setacross_regs = [{}];
setacross_tempsets = [1..19];
difftemp = [];
diffreg = [68..69, 89..90, 118..119, 130..131, 237..255];
domop_operands = [];
domop_temps = [];
domuse_p = [24, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 73, 77, 81, 81, 83, 85, 87, 98, 104, 106, 108, 110, 112, 116, 119, 121, 123, 128, 131, 137, 143, 148, 152, 154, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234];
domuse_q = [75, 157, 69, 68, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 236, 69, 68, 75, 90, 143, 161, 89, 90, 89, 130, 118, 251, 158, 251, 159, 118, 160, 125, 125, 130, 160, 140, 161, 157, 158, 159, 255, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 255];
domuse_r = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 23, 3, 4, 0, 76, 70, 70, 82, 76, 82, 97, 103, 19, 107, 19, 111, 103, 1, 120, 120, 97, 1, 132, 70, 2, 107, 111, 163, 23, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 163];
infassign = array2d(1..31, 1..4, [24, 10, 79, 79, 25, 10, 80, 80, 26, 10, 81, 81, 27, 10, 82, 82, 28, 10, 83, 83, 29, 10, 84, 84, 30, 10, 85, 85, 31, 10, 86, 86, 32, 10, 87, 87, 33, 10, 88, 88, 34, 10, 89, 89, 35, 10, 90, 90, 36, 10, 91, 91, 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, 92, 92, 47, 10, 93, 93, 50, 10, 94, 94, 53, 10, 95, 95, 57, 10, 96, 96, 60, 10, 97, 97, 63, 10, 98, 98, 65, 10, 99, 99, 67, 10, 100, 100, 71, 10, 101, 101, 76, 10, 102, 102, 107, 10, 103, 103]);
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, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 26, 29, 30, 32, 36, 37, 39, 42, 44, 46, 47, 50, 53, 56, 57, 61, 72];
dominate_ed = [27, 23, 24, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 30, 33, 61, 34, 37, 40, 54, 48, 67, 68, 53, 51, 64, 57, 59, 66, 88];
dominate_instructions = [{}, {}, {}, 8..8, 8..8, 8..8, 8..8, 8..8, 8..8, 8..8, 8..8, 16..16, 16..16, 16..16, 16..16, 16..16, 16..16, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 8..8];
dominate_temps = [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}];
precedence = [39, 66, 96, 126, 177, 189, 200, 211, 221, 235, 244, 256, 271, 275, 280, 285, 289, 294, 302, 307, 312, 317, 322, 327, 332, 337, 342, 372, 390, 396, 400, 404, 408, 412, 416, 420, 424, 428, 432, 436, 440, 444, 448, 452, 456, 460, 464, 468, 472, 476, 480, 484, 488, 492, 496, 500, 504, 508, 512, 516, 520, 524, 528, 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, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 714, 716, 720, 722, 724, 728, 730, 732, 736, 738, 740, 744, 746, 750, 752, 754, 758, 760, 762, 766, 768, 770, 772, 774, 778, 780, 784, 786, 788, 792, 794, 798, 800, 804, 806, 808, 812, 814, 818, 820, 824, 826, 830, 832, 836, 838, 842, 844, 848, 850, 854, 856, 858, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 896, 898, 900, 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 932, 934, 936, 938, 940, 942, 944, 946, 948, 950, 952, 954, 956, 958, 960, 962, 964, 966, 968, 970, 972, 974, 976, 978, 980, 982, 984, 986, 988, 990, 992, 994, 996, 998, 1000, 1002, 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, 1219, 1222, 1225, 1228, 1231, 1233, 1236, 1238, 1241, 1244, 1247, 1250, 1253, 1256, 1258, 1260, 1263, 1266, 1269, 1271, 1273, 1275, 1277, 1279, 1281, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372];
table_exists_ops = [4..4, 5..5, 22..22];
table_iffall_ops = [8..8 union 74..74, 9..9 union 75..75, 10..10 union 76..76, 11..11 union 77..77, 12..12 union 78..78, 13..13 union 79..79, 14..14 union 80..80, 15..15 union 81..81, 16..16 union 82..82, 17..17 union 83..83, 18..18 union 84..84, 19..19 union 85..85, 20..20 union 86..86, 21..21 union 87..87, 72..72 union 88..88];
relation_ops = [2..2 union 89..89, 3..3 union 27..27, 5..5 union 65..65, 6..6 union 23..23, 7..7 union 24..24, 8..8 union 74..74, 9..9 union 75..75, 10..10 union 76..76, 11..11 union 77..77, 12..12 union 78..78, 13..13 union 79..79, 14..14 union 80..80, 15..15 union 81..81, 16..16 union 82..82, 17..17 union 83..83, 18..18 union 84..84, 19..19 union 85..85, 20..20 union 86..86, 21..21 union 87..87, 22..22 union 73..73, 29..29 union 33..33, 32..32 union 34..34, 39..39 union 54..54, 42..42 union 48..48, 44..44 union 67..67, 46..46 union 68..68, 50..51, 72..72 union 88..88, 36..37 union 40..40, 56..57 union 59..59, 4..4 union 47..47 union 53..53 union 64..64, 26..26 union 30..30 union 61..61 union 66..66];
relation_temps = [{}, 73..73 union 75..75, 148..148 union 157..157, 64..64 union 69..69, 66..66 union 68..68, 206..206 union 237..237, 208..208 union 238..238, 210..210 union 239..239, 212..212 union 240..240, 214..214 union 241..241, 216..216 union 242..242, 218..218 union 243..243, 220..220 union 244..244, 222..222 union 245..245, 224..224 union 246..246, 226..226 union 247..247, 228..228 union 248..248, 230..230 union 249..249, 232..232 union 250..250, 204..204 union 236..236, 85..85 union 90..90, 87..87 union 89..89, 128..128 union 130..130, 116..116 union 118..118, 152..152 union 158..158, 154..154 union 159..159, 123..123 union 125..125, 234..234 union 255..255, 94..94 union 96..96 union 100..100 union 102..102, 135..135 union 137..138 union 140..140, 114..114 union 119..119 union 126..126 union 131..131 union 146..146 union 160..160, 79..79 union 81..81 union 141..141 union 143..143 union 150..150 union 161..161];
relation_ntuples = [1, 3, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 12, 10, 39, 33];
relation_range = [1..2, 3..14, 15..22, 23..34, 35..46, 47..54, 55..62, 63..70, 71..78, 79..86, 87..94, 95..102, 103..110, 111..118, 119..126, 127..134, 135..142, 143..150, 151..158, 159..166, 167..178, 179..190, 191..202, 203..214, 215..226, 227..238, 239..250, 251..258, 259..342, 343..412, 413..802, 803..1132];
ints = [1, 1, 0, 0, -1, 0, 1, 0, -1, 24, 1, 1, 24, 48, 1, 0, -1, 26, 1, 1, 26, 83, 0, 0, -1, 3, 1, 0, -1, 27, 1, 1, 27, 44, 0, 0, -1, 4, 1, 0, -1, 28, 1, 1, 28, 45, 0, 0, -1, 5, 1, 1, 29, 109, 0, 0, -1, 6, 1, 1, 30, 110, 0, 0, -1, 7, 1, 1, 31, 111, 0, 0, -1, 8, 1, 1, 32, 112, 0, 0, -1, 9, 1, 1, 33, 113, 0, 0, -1, 10, 1, 1, 34, 114, 0, 0, -1, 11, 1, 1, 35, 115, 0, 0, -1, 12, 1, 1, 36, 116, 0, 0, -1, 13, 1, 1, 37, 117, 0, 0, -1, 14, 1, 1, 38, 118, 0, 0, -1, 15, 1, 1, 39, 119, 0, 0, -1, 16, 1, 1, 40, 120, 0, 0, -1, 17, 1, 1, 41, 121, 0, 0, -1, 18, 1, 1, 42, 122, 1, 0, -1, 43, 1, 1, 43, 108, 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, 59, 1, 0, -1, 60, 1, 1, 60, 74, 0, 0, -1, 62, 1, 0, -1, 63, 1, 1, 63, 69, 0, 0, -1, 64, 1, 0, -1, 65, 1, 1, 65, 85, 0, 0, -1, 66, 1, 0, -1, 67, 1, 1, 67, 86, 0, 0, -1, 70, 1, 0, -1, 71, 1, 1, 71, 72, 0, 0, -1, 87, 1, 1, 107, 123, 0, 0, 0, -1, 56, -1, 56, 1, 0, 0, -1, 56, -1, 57, 1, 0, 0, -1, 57, -1, 56, 1, 0, 0, -1, 57, -1, 57, 1, 1, 0, 56, 57, -1, 58, 1, 1, 0, 57, 56, -1, 58, 1, 1, 0, 57, 57, -1, 58, 1, 1, 0, 57, 58, -1, 56, 1, 1, 0, 57, 58, -1, 58, 1, 1, 1, 56, 58, 57, 61, 1, 1, 1, 57, 58, 56, 61, 1, 1, 1, 57, 58, 57, 61, 0, 0, 0, -1, 75, -1, 75, 1, 0, 0, -1, 75, -1, 76, 1, 0, 0, -1, 76, -1, 76, 1, 1, 0, 75, 76, -1, 77, 1, 1, 0, 76, 75, -1, 77, 1, 1, 0, 76, 76, -1, 77, 1, 1, 0, 76, 77, -1, 77, 1, 1, 1, 75, 77, 76, 78, 1, 1, 1, 76, 77, 75, 78, 1, 1, 1, 76, 77, 76, 78, 1, 0, 0, 0, -1, 1, -1, 1, -1, 25, 1, 0, 0, 0, -1, 1, -1, 25, -1, 25, 1, 0, 0, 0, -1, 25, -1, 1, -1, 25, 1, 0, 0, 0, -1, 25, -1, 25, -1, 25, 1, 1, 0, 0, 1, 1, -1, 25, -1, 68, 1, 1, 0, 0, 1, 25, -1, 1, -1, 68, 1, 1, 0, 0, 1, 25, -1, 25, -1, 68, 1, 1, 0, 0, 1, 25, -1, 68, -1, 68, 1, 1, 0, 0, 25, 1, -1, 1, -1, 68, 1, 1, 0, 0, 25, 1, -1, 25, -1, 68, 1, 1, 0, 0, 25, 1, -1, 68, -1, 68, 1, 1, 0, 0, 25, 25, -1, 1, -1, 68, 1, 1, 0, 0, 25, 25, -1, 25, -1, 68, 1, 1, 0, 0, 25, 25, -1, 68, -1, 68, 1, 1, 0, 0, 25, 68, -1, 1, -1, 68, 1, 1, 0, 0, 25, 68, -1, 68, -1, 68, 1, 1, 1, 0, 1, 1, 25, 68, -1, 73, 1, 1, 1, 0, 1, 25, 1, 68, -1, 73, 1, 1, 1, 0, 1, 25, 25, 68, -1, 73, 1, 1, 1, 0, 1, 68, 25, 1, -1, 73, 1, 1, 1, 0, 1, 68, 25, 68, -1, 73, 1, 1, 1, 0, 1, 68, 25, 73, -1, 73, 1, 1, 1, 0, 25, 1, 1, 68, -1, 73, 1, 1, 1, 0, 25, 1, 25, 68, -1, 73, 1, 1, 1, 0, 25, 25, 1, 68, -1, 73, 1, 1, 1, 0, 25, 25, 25, 68, -1, 73, 1, 1, 1, 0, 25, 68, 1, 1, -1, 73, 1, 1, 1, 0, 25, 68, 1, 68, -1, 73, 1, 1, 1, 0, 25, 68, 1, 73, -1, 73, 1, 1, 1, 0, 25, 68, 25, 1, -1, 73, 1, 1, 1, 0, 25, 68, 25, 68, -1, 73, 1, 1, 1, 0, 25, 68, 25, 73, -1, 73, 1, 1, 1, 1, 1, 68, 1, 73, 25, 82, 1, 1, 1, 1, 1, 68, 25, 73, 1, 82, 1, 1, 1, 1, 1, 68, 25, 73, 25, 82, 1, 1, 1, 1, 25, 68, 1, 73, 1, 82, 1, 1, 1, 1, 25, 68, 1, 73, 25, 82, 1, 1, 1, 1, 25, 68, 25, 73, 1, 82, 1, 1, 1, 1, 25, 68, 25, 73, 25, 82, 0, 0, 0, 0, -1, 46, -1, 46, -1, 46, 1, 0, 0, 0, -1, 46, -1, 46, -1, 47, 1, 0, 0, 0, -1, 46, -1, 47, -1, 47, 1, 0, 0, 0, -1, 47, -1, 47, -1, 47, 1, 1, 0, 0, 46, 46, -1, 47, -1, 51, 1, 1, 0, 0, 46, 47, -1, 47, -1, 51, 1, 1, 0, 0, 46, 47, -1, 51, -1, 51, 1, 1, 0, 0, 47, 46, -1, 46, -1, 51, 1, 1, 0, 0, 47, 46, -1, 47, -1, 51, 1, 1, 0, 0, 47, 46, -1, 51, -1, 51, 1, 1, 0, 0, 47, 47, -1, 47, -1, 51, 1, 1, 0, 0, 47, 47, -1, 51, -1, 51, 1, 1, 0, 0, 47, 51, -1, 51, -1, 51, 1, 1, 1, 0, 46, 46, 47, 51, -1, 79, 1, 1, 1, 0, 46, 47, 46, 51, -1, 79, 1, 1, 1, 0, 46, 47, 47, 51, -1, 79, 1, 1, 1, 0, 46, 51, 47, 51, -1, 79, 1, 1, 1, 0, 46, 51, 47, 79, -1, 79, 1, 1, 1, 0, 47, 46, 46, 51, -1, 79, 1, 1, 1, 0, 47, 46, 47, 51, -1, 79, 1, 1, 1, 0, 47, 47, 46, 51, -1, 79, 1, 1, 1, 0, 47, 47, 47, 51, -1, 79, 1, 1, 1, 0, 47, 51, 46, 51, -1, 79, 1, 1, 1, 0, 47, 51, 46, 79, -1, 79, 1, 1, 1, 0, 47, 51, 47, 51, -1, 79, 1, 1, 1, 0, 47, 51, 47, 79, -1, 79, 1, 1, 1, 1, 46, 51, 46, 79, 47, 84, 1, 1, 1, 1, 46, 51, 47, 79, 46, 84, 1, 1, 1, 1, 46, 51, 47, 79, 47, 84, 1, 1, 1, 1, 47, 51, 46, 79, 46, 84, 1, 1, 1, 1, 47, 51, 46, 79, 47, 84, 1, 1, 1, 1, 47, 51, 47, 79, 46, 84, 1, 1, 1, 1, 47, 51, 47, 79, 47, 84];
calleesaved_spill = [8..8 union 74..74, 9..9 union 75..75, 10..10 union 76..76, 11..11 union 77..77, 12..12 union 78..78, 13..13 union 79..79, 14..14 union 80..80, 15..15 union 81..81, 16..16 union 82..82, 17..17 union 83..83, 18..18 union 84..84, 19..19 union 85..85, 20..20 union 86..86, 21..21 union 87..87];
cs_spill_transpose = array2d(1..2, 1..14, [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87]);
activator_insns = [6..8 union 13..13 union 16..16];
activator_ops = [2..2 union 89..89];
value_precede_min = [1, 1];
value_precede_max = [51, 51];
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, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 107, 108, 123];
lat_table = array2d(1..472, 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, 0, 100, 0, 40, 0, 101, 0, 40, 5, 100, 0, 40, 5, 101, 1, 40, 8, 100, 0, 40, 8, 101, 3, 41, 11, 102, 0, 41, 11, 103, 3, 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, 12, 106, 0, 43, 12, 107, 1, 44, 0, 108, 0, 44, 0, 109, 0, 44, 5, 108, 0, 44, 5, 109, 1, 44, 6, 108, 0, 44, 6, 109, 1, 45, 12, 110, 0, 45, 12, 111, 1, 46, 0, 112, 0, 46, 0, 113, 0, 46, 5, 112, 0, 46, 5, 113, 1, 46, 6, 112, 0, 46, 6, 113, 1, 47, 0, 114, 0, 47, 0, 115, 0, 47, 5, 114, 0, 47, 5, 115, 1, 47, 8, 114, 0, 47, 8, 115, 3, 48, 0, 116, 0, 48, 0, 117, 0, 48, 5, 116, 0, 48, 5, 117, 1, 48, 8, 116, 0, 48, 8, 117, 3, 49, 9, 118, 0, 49, 9, 119, 0, 49, 9, 120, 1, 50, 0, 121, 0, 50, 0, 122, 0, 50, 5, 121, 0, 50, 5, 122, 1, 50, 6, 121, 0, 50, 6, 122, 1, 51, 0, 123, 0, 51, 0, 124, 0, 51, 5, 123, 0, 51, 5, 124, 1, 51, 8, 123, 0, 51, 8, 124, 3, 52, 13, 125, 0, 53, 0, 126, 0, 53, 0, 127, 0, 53, 5, 126, 0, 53, 5, 127, 1, 53, 8, 126, 0, 53, 8, 127, 3, 54, 0, 128, 0, 54, 0, 129, 0, 54, 5, 128, 0, 54, 5, 129, 1, 54, 8, 128, 0, 54, 8, 129, 3, 55, 9, 130, 0, 55, 9, 131, 0, 55, 9, 132, 1, 56, 0, 133, 0, 56, 0, 134, 0, 56, 5, 133, 0, 56, 5, 134, 1, 56, 6, 133, 0, 56, 6, 134, 1, 57, 0, 135, 0, 57, 0, 136, 0, 57, 5, 135, 0, 57, 5, 136, 1, 57, 8, 135, 0, 57, 8, 136, 3, 58, 13, 137, 0, 59, 0, 138, 0, 59, 0, 139, 0, 59, 5, 138, 0, 59, 5, 139, 1, 59, 8, 138, 0, 59, 8, 139, 3, 60, 13, 140, 0, 61, 0, 141, 0, 61, 0, 142, 0, 61, 5, 141, 0, 61, 5, 142, 1, 61, 8, 141, 0, 61, 8, 142, 3, 62, 11, 143, 0, 62, 11, 144, 3, 63, 14, 145, 2, 64, 0, 146, 0, 64, 0, 147, 0, 64, 5, 146, 0, 64, 5, 147, 1, 64, 8, 146, 0, 64, 8, 147, 3, 65, 0, 148, 0, 65, 0, 149, 0, 65, 5, 148, 0, 65, 5, 149, 1, 65, 8, 148, 0, 65, 8, 149, 3, 66, 0, 150, 0, 66, 0, 151, 0, 66, 5, 150, 0, 66, 5, 151, 1, 66, 8, 150, 0, 66, 8, 151, 3, 67, 0, 152, 0, 67, 0, 153, 0, 67, 5, 152, 0, 67, 5, 153, 1, 67, 8, 152, 0, 67, 8, 153, 3, 68, 0, 154, 0, 68, 0, 155, 0, 68, 5, 154, 0, 68, 5, 155, 1, 68, 8, 154, 0, 68, 8, 155, 3, 69, 15, 156, 0, 70, 2, 157, 0, 70, 2, 158, 0, 70, 2, 159, 0, 70, 2, 160, 0, 70, 2, 161, 0, 70, 2, 162, 0, 70, 2, 163, 1, 70, 2, 164, 1, 70, 2, 165, 1, 70, 2, 166, 1, 70, 2, 167, 1, 70, 2, 168, 1, 70, 2, 169, 1, 70, 2, 170, 1, 70, 2, 171, 1, 70, 2, 172, 1, 70, 2, 173, 1, 70, 2, 174, 1, 70, 2, 175, 1, 70, 2, 176, 1, 70, 2, 177, 1, 70, 2, 178, 1, 70, 2, 179, 1, 70, 2, 180, 1, 70, 2, 181, 1, 70, 2, 182, 1, 71, 1, 183, 0, 71, 1, 184, 0, 71, 1, 185, 0, 71, 1, 186, 0, 71, 1, 187, 0, 71, 1, 188, 0, 71, 1, 189, 0, 71, 1, 190, 0, 71, 1, 191, 0, 71, 1, 192, 0, 71, 1, 193, 0, 71, 1, 194, 0, 71, 1, 195, 0, 71, 1, 196, 0, 71, 1, 197, 0, 71, 1, 198, 0, 71, 1, 199, 0, 71, 1, 200, 0, 71, 1, 201, 0, 72, 0, 202, 0, 72, 0, 203, 0, 72, 5, 202, 0, 72, 5, 203, 1, 72, 6, 202, 0, 72, 6, 203, 1, 73, 0, 204, 0, 73, 0, 205, 0, 73, 5, 204, 0, 73, 5, 205, 1, 73, 8, 204, 0, 73, 8, 205, 3, 74, 0, 206, 0, 74, 0, 207, 0, 74, 8, 206, 0, 74, 8, 207, 3, 75, 0, 208, 0, 75, 0, 209, 0, 75, 8, 208, 0, 75, 8, 209, 3, 76, 0, 210, 0, 76, 0, 211, 0, 76, 8, 210, 0, 76, 8, 211, 3, 77, 0, 212, 0, 77, 0, 213, 0, 77, 8, 212, 0, 77, 8, 213, 3, 78, 0, 214, 0, 78, 0, 215, 0, 78, 8, 214, 0, 78, 8, 215, 3, 79, 0, 216, 0, 79, 0, 217, 0, 79, 8, 216, 0, 79, 8, 217, 3, 80, 0, 218, 0, 80, 0, 219, 0, 80, 8, 218, 0, 80, 8, 219, 3, 81, 0, 220, 0, 81, 0, 221, 0, 81, 8, 220, 0, 81, 8, 221, 3, 82, 0, 222, 0, 82, 0, 223, 0, 82, 16, 222, 0, 82, 16, 223, 3, 83, 0, 224, 0, 83, 0, 225, 0, 83, 16, 224, 0, 83, 16, 225, 3, 84, 0, 226, 0, 84, 0, 227, 0, 84, 16, 226, 0, 84, 16, 227, 3, 85, 0, 228, 0, 85, 0, 229, 0, 85, 16, 228, 0, 85, 16, 229, 3, 86, 0, 230, 0, 86, 0, 231, 0, 86, 16, 230, 0, 86, 16, 231, 3, 87, 0, 232, 0, 87, 0, 233, 0, 87, 16, 232, 0, 87, 16, 233, 3, 88, 0, 234, 0, 88, 0, 235, 0, 88, 5, 234, 0, 88, 5, 235, 1, 88, 8, 234, 0, 88, 8, 235, 3, 90, 18, 236, 0, 91, 2, 237, 0, 91, 2, 238, 0, 91, 2, 239, 0, 91, 2, 240, 0, 91, 2, 241, 0, 91, 2, 242, 0, 91, 2, 243, 0, 91, 2, 244, 0, 91, 2, 245, 0, 91, 2, 246, 0, 91, 2, 247, 0, 91, 2, 248, 0, 91, 2, 249, 0, 91, 2, 250, 0, 91, 2, 251, 0, 91, 2, 252, 0, 91, 2, 253, 0, 91, 2, 254, 0, 91, 2, 255, 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 = [1373];
temp_domain = array1d(0..123, [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..80, -1..31 union 81..81, -1..31 union 82..82, -1..31 union 83..83, -1..-1 union 84..84, -1..-1 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 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 92..92, -1..31, -1..31, 0..31, -1..31 union 93..93, -1..31, 0..31, -1..31 union 94..94, -1..31, 0..31, -1..31 union 95..95, -1..31, -1..31, 0..31, -1..31 union 96..96, -1..31, 0..31, -1..31 union 97..97, -1..31, 0..31, -1..31 union 98..98, 0..31, -1..31 union 99..99, 0..31, -1..31 union 100..100, -1..31, -1..31, 0..31, -1..31 union 101..101, -1..31, -1..31, -1..31, 0..31, -1..31 union 102..102, -1..31, -1..31, -1..31, 25..25, 31..31, -1..31, -1..-1 union 4..4, -1..31, -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 103..103, -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..202, 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, 0, 0, 40, 5, 1, 40, 8, 3, 41, 11, 3, 42, 0, 0, 42, 5, 1, 42, 6, 1, 43, 12, 1, 44, 0, 0, 44, 5, 1, 44, 6, 1, 45, 12, 1, 46, 0, 0, 46, 5, 1, 46, 6, 1, 47, 0, 0, 47, 5, 1, 47, 8, 3, 48, 0, 0, 48, 5, 1, 48, 8, 3, 49, 9, 1, 50, 0, 0, 50, 5, 1, 50, 6, 1, 51, 0, 0, 51, 5, 1, 51, 8, 3, 52, 13, 1, 53, 0, 0, 53, 5, 1, 53, 8, 3, 54, 0, 0, 54, 5, 1, 54, 8, 3, 55, 9, 1, 56, 0, 0, 56, 5, 1, 56, 6, 1, 57, 0, 0, 57, 5, 1, 57, 8, 3, 58, 13, 1, 59, 0, 0, 59, 5, 1, 59, 8, 3, 60, 13, 1, 61, 0, 0, 61, 5, 1, 61, 8, 3, 62, 11, 3, 63, 14, 2, 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, 15, 1, 70, 2, 1, 71, 1, 0, 72, 0, 0, 72, 5, 1, 72, 6, 1, 73, 0, 0, 73, 5, 1, 73, 8, 3, 74, 0, 0, 74, 8, 3, 75, 0, 0, 75, 8, 3, 76, 0, 0, 76, 8, 3, 77, 0, 0, 77, 8, 3, 78, 0, 0, 78, 8, 3, 79, 0, 0, 79, 8, 3, 80, 0, 0, 80, 8, 3, 81, 0, 0, 81, 8, 3, 82, 0, 0, 82, 16, 3, 83, 0, 0, 83, 16, 3, 84, 0, 0, 84, 16, 3, 85, 0, 0, 85, 16, 3, 86, 0, 0, 86, 16, 3, 87, 0, 0, 87, 16, 3, 88, 0, 0, 88, 5, 1, 88, 8, 3, 89, 0, 0, 89, 17, 1, 90, 18, 1, 91, 0, 0]);
expr_op = [1, 6, 12, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 12, 1, 0, 6, 8, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 1, 8, 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, 1, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 1, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 6, 3, 6, 3, 1, 8, 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, 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, 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, 1, 8, 3, 3, 3, 3, 3, 3, 3, 3, 1, 8, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 6, 3, 1, 8, 3, 3, 3, 3, 3, 3, 3, 1, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 8, 3, 3, 3, 3, 3, 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, 3, 1, 8, 3, 3, 3, 3, 3, 3, 1, 8, 3, 3, 3, 1, 8, 3, 3, 3, 1, 8, 3, 3, 3, 1, 8, 3, 3, 3, 1, 8, 3, 3, 3, 1, 8, 3, 3, 3, 1, 8, 3, 3, 3, 1, 8, 3, 3, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 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, 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, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 0, 8, 7, 4, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 0, 8, 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, 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, 8, 3, 6, 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, 6, 8, 3, 6, 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];
expr_arg1 = [0, 236, 43, 0, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 204, 236, 108, 0, 0, 68, 1, 24, 69, 27, 75, 29, 81, 31, 81, 33, 89, 35, 90, 37, 0, 1, 24, 27, 29, 31, 33, 35, 37, 96, 48, 96, 50, 102, 52, 102, 54, 102, 56, 118, 58, 119, 60, 119, 62, 125, 64, 0, 1, 24, 27, 29, 31, 33, 35, 37, 48, 50, 52, 54, 56, 58, 60, 62, 64, 130, 84, 131, 86, 131, 88, 131, 90, 137, 92, 137, 94, 0, 1, 24, 27, 29, 31, 33, 35, 37, 48, 50, 52, 54, 56, 58, 60, 62, 64, 84, 86, 88, 90, 92, 94, 140, 120, 140, 122, 140, 124, 0, 1, 24, 27, 29, 31, 33, 35, 37, 48, 50, 52, 54, 56, 58, 62, 64, 84, 88, 90, 92, 94, 120, 122, 124, 143, 151, 143, 153, 143, 155, 157, 157, 158, 159, 159, 161, 160, 163, 160, 165, 160, 167, 161, 169, 161, 171, 161, 173, 161, 175, 0, 68, 1, 178, 69, 181, 75, 183, 89, 185, 90, 187, 0, 1, 178, 181, 183, 185, 187, 118, 196, 125, 198, 0, 1, 178, 181, 183, 185, 187, 196, 198, 130, 209, 0, 1, 178, 181, 183, 185, 187, 196, 198, 209, 0, 1, 178, 181, 183, 185, 187, 196, 198, 209, 158, 231, 159, 233, 0, 35, 48, 50, 52, 54, 56, 58, 64, 0, 35, 48, 50, 52, 54, 56, 58, 64, 84, 92, 94, 0, 35, 48, 50, 52, 54, 56, 58, 64, 84, 92, 94, 120, 122, 124, 0, 35, 196, 198, 0, 35, 196, 198, 209, 0, 35, 196, 198, 209, 0, 1, 60, 62, 0, 38, 84, 92, 94, 0, 38, 84, 92, 94, 120, 122, 124, 0, 1, 86, 88, 90, 0, 1, 120, 122, 124, 0, 35, 120, 122, 124, 0, 38, 120, 122, 124, 0, 55, 120, 122, 124, 0, 55, 120, 122, 124, 0, 1, 151, 153, 155, 0, 25, 151, 153, 155, 0, 237, 1, 343, 238, 346, 239, 348, 240, 350, 241, 352, 242, 354, 243, 356, 244, 358, 245, 360, 246, 362, 247, 364, 248, 366, 249, 368, 250, 370, 0, 1, 343, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 255, 388, 0, 2, 2, 392, 3, 394, 0, 2, 4, 398, 0, 2, 5, 402, 0, 2, 6, 406, 0, 2, 7, 410, 0, 2, 8, 414, 0, 2, 9, 418, 0, 2, 10, 422, 0, 2, 11, 426, 0, 2, 12, 430, 0, 2, 13, 434, 0, 2, 14, 438, 0, 2, 15, 442, 0, 2, 16, 446, 0, 2, 17, 450, 0, 2, 18, 454, 0, 2, 19, 458, 0, 2, 20, 462, 0, 2, 21, 466, 0, 2, 22, 470, 0, 2, 23, 474, 0, 2, 24, 478, 0, 2, 26, 482, 0, 2, 27, 486, 0, 2, 29, 490, 0, 2, 30, 494, 0, 2, 32, 498, 0, 2, 33, 502, 0, 2, 34, 506, 0, 2, 36, 510, 0, 2, 37, 514, 0, 2, 39, 518, 0, 2, 40, 522, 0, 2, 42, 526, 0, 2, 44, 530, 0, 2, 46, 534, 0, 2, 47, 538, 0, 2, 48, 542, 0, 2, 50, 546, 0, 2, 51, 550, 0, 2, 53, 554, 0, 2, 54, 558, 0, 2, 56, 562, 0, 2, 57, 566, 0, 2, 59, 570, 0, 2, 61, 574, 0, 2, 64, 578, 0, 2, 65, 582, 0, 2, 66, 586, 0, 2, 67, 590, 0, 2, 68, 594, 0, 2, 72, 598, 0, 2, 73, 602, 0, 2, 74, 606, 0, 2, 75, 610, 0, 2, 76, 614, 0, 2, 77, 618, 0, 2, 78, 622, 0, 2, 79, 626, 0, 2, 80, 630, 0, 2, 81, 634, 0, 2, 82, 638, 0, 2, 83, 642, 0, 2, 84, 646, 0, 2, 85, 650, 0, 2, 86, 654, 0, 2, 87, 658, 0, 2, 88, 662, 0, 2, 89, 666, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 23, 23, 712, 0, 24, 0, 24, 24, 718, 0, 26, 0, 27, 0, 27, 27, 726, 0, 29, 0, 30, 0, 30, 30, 734, 0, 32, 0, 33, 0, 33, 33, 742, 0, 34, 0, 34, 34, 748, 0, 36, 0, 37, 0, 37, 37, 756, 0, 39, 0, 40, 0, 40, 40, 764, 0, 42, 0, 44, 0, 46, 0, 47, 0, 47, 47, 776, 0, 48, 0, 48, 48, 782, 0, 50, 0, 51, 0, 51, 51, 790, 0, 53, 0, 53, 53, 796, 0, 54, 0, 54, 54, 802, 0, 56, 0, 57, 0, 57, 57, 810, 0, 59, 0, 59, 59, 816, 0, 61, 0, 61, 61, 822, 0, 64, 0, 64, 64, 828, 0, 65, 0, 65, 65, 834, 0, 66, 0, 66, 66, 840, 0, 67, 0, 67, 67, 846, 0, 68, 0, 68, 68, 852, 0, 72, 0, 73, 0, 73, 73, 860, 0, 74, 0, 75, 0, 76, 0, 77, 0, 78, 0, 79, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, 86, 0, 87, 0, 88, 0, 88, 88, 894, 0, 1, 392, 2, 392, 2, 392, 2, 392, 2, 392, 1, 394, 3, 394, 1, 398, 4, 398, 1, 402, 5, 402, 1, 406, 6, 406, 1, 410, 7, 410, 1, 414, 8, 414, 1, 418, 9, 418, 1, 422, 10, 422, 1, 426, 11, 426, 1, 430, 12, 430, 1, 434, 13, 434, 1, 438, 14, 438, 1, 442, 15, 442, 1, 446, 16, 446, 1, 450, 17, 450, 1, 454, 18, 454, 1, 458, 19, 458, 1, 462, 20, 462, 1, 466, 21, 466, 1, 470, 22, 470, 1, 474, 23, 474, 1, 478, 24, 478, 1, 482, 26, 482, 1, 486, 27, 486, 1, 490, 29, 490, 1, 494, 30, 494, 1, 498, 32, 498, 1, 502, 33, 502, 1, 506, 34, 506, 1, 510, 36, 510, 1, 514, 37, 514, 1, 518, 39, 518, 1, 522, 40, 522, 1, 526, 42, 526, 1, 530, 44, 530, 1, 534, 46, 534, 1, 538, 47, 538, 1, 542, 48, 542, 1, 546, 50, 546, 1, 550, 51, 550, 1, 554, 53, 554, 1, 558, 54, 558, 1, 562, 56, 562, 1, 566, 57, 566, 1, 570, 59, 570, 1, 574, 61, 574, 1, 578, 64, 578, 1, 582, 65, 582, 1, 586, 66, 586, 1, 590, 67, 590, 1, 594, 68, 594, 1, 598, 72, 598, 1, 602, 73, 602, 1, 606, 74, 606, 74, 606, 1, 610, 75, 610, 75, 610, 1, 614, 76, 614, 76, 614, 1, 618, 77, 618, 77, 618, 1, 622, 78, 622, 78, 622, 1, 626, 79, 626, 79, 626, 1, 630, 80, 630, 80, 630, 1, 634, 81, 634, 81, 634, 1, 638, 82, 638, 82, 638, 1, 642, 83, 642, 83, 642, 1, 646, 84, 646, 84, 646, 1, 650, 85, 650, 85, 650, 1, 654, 86, 654, 86, 654, 1, 658, 87, 658, 87, 658, 1, 662, 88, 662, 1, 666, 52, 666, 58, 666, 60, 666, 89, 666, 24, 3, 1217, 26, 4, 1220, 28, 5, 1223, 30, 6, 1226, 32, 7, 1229, 7, 1229, 62, 22, 1234, 22, 1234, 68, 25, 1239, 69, 25, 1242, 75, 28, 1245, 114, 47, 1248, 119, 49, 1251, 126, 53, 1254, 38, 209, 38, 209, 131, 55, 1261, 146, 64, 1264, 157, 0, 1267, 0, 157, 0, 159, 0, 231, 0, 161, 0, 233, 1, 20, 0, 388, 0, 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, 1, 1, 1, 1, 1, 25, 25, 25, 25, 28, 28, 31, 31, 31, 35, 35, 35, 35, 35, 35, 38, 38, 38, 38, 38, 41, 41, 41, 43, 43, 45, 45, 49, 49, 52, 52, 55, 55, 55, 58, 58, 60, 60, 60, 62, 62, 62, 63, 63, 69, 69, 70, 70, 70, 70, 71, 90, 91, 70];
expr_arg2 = [0, 43, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 43, 108, 0, 0, 0, 28, 35, 25, 27, 25, 24, 25, 47, 25, 51, 25, 53, 25, 50, 25, 0, 52, 40, 40, 40, 40, 40, 40, 40, 57, 40, 58, 40, 57, 40, 58, 40, 61, 40, 63, 40, 25, 40, 68, 40, 71, 40, 0, 58, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 60, 67, 25, 67, 68, 67, 73, 67, 76, 67, 77, 67, 0, 89, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 76, 97, 77, 97, 78, 97, 0, 70, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 47, 127, 51, 127, 79, 127, 83, 127, 65, 127, 67, 127, 68, 127, 73, 127, 82, 127, 47, 127, 51, 127, 79, 127, 84, 127, 0, 45, 35, 179, 44, 179, 48, 179, 55, 179, 54, 179, 0, 52, 190, 190, 190, 190, 190, 69, 190, 72, 190, 0, 58, 201, 201, 201, 201, 201, 201, 201, 74, 201, 0, 89, 212, 212, 212, 212, 212, 212, 212, 212, 0, 70, 222, 222, 222, 222, 222, 222, 222, 222, 85, 222, 86, 222, 0, 52, 236, 236, 236, 236, 236, 236, 236, 0, 58, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 0, 89, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 0, 52, 272, 272, 0, 58, 276, 276, 276, 0, 89, 281, 281, 281, 0, 49, 286, 286, 0, 58, 290, 290, 290, 0, 89, 295, 295, 295, 295, 295, 295, 0, 55, 303, 303, 303, 0, 60, 308, 308, 308, 0, 60, 313, 313, 313, 0, 60, 318, 318, 318, 0, 60, 323, 323, 323, 0, 89, 328, 328, 328, 0, 62, 333, 333, 333, 0, 62, 338, 338, 338, 0, 109, 91, 344, 110, 344, 111, 344, 112, 344, 113, 344, 114, 344, 115, 344, 116, 344, 117, 344, 118, 344, 119, 344, 120, 344, 121, 344, 122, 344, 0, 90, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 123, 373, 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, 40, 0, 0, 0, 42, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 59, 0, 0, 0, 61, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 89, 0, 90, 8, 0, 0, 89, 0, 89, 0, 90, 8, 0, 0, 89, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 89, 0, 90, 8, 0, 0, 89, 0, 89, 0, 90, 8, 0, 0, 89, 0, 89, 0, 89, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 90, 8, 0, 0, 89, 0, 89, 0, 90, 8, 0, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 89, 0, 90, 8, 0, 0, 2, 897, 52, 899, 58, 901, 60, 903, 90, 905, 3, 907, 90, 909, 4, 911, 90, 913, 5, 915, 90, 917, 6, 919, 90, 921, 7, 923, 90, 925, 8, 927, 90, 929, 9, 931, 90, 933, 10, 935, 90, 937, 11, 939, 90, 941, 12, 943, 90, 945, 13, 947, 90, 949, 14, 951, 90, 953, 15, 955, 90, 957, 16, 959, 90, 961, 17, 963, 90, 965, 18, 967, 90, 969, 19, 971, 90, 973, 20, 975, 90, 977, 21, 979, 90, 981, 22, 983, 90, 985, 23, 987, 90, 989, 24, 991, 90, 993, 26, 995, 90, 997, 27, 999, 90, 1001, 29, 1003, 90, 1005, 30, 1007, 90, 1009, 32, 1011, 90, 1013, 33, 1015, 90, 1017, 34, 1019, 90, 1021, 36, 1023, 90, 1025, 37, 1027, 90, 1029, 39, 1031, 90, 1033, 40, 1035, 90, 1037, 42, 1039, 90, 1041, 44, 1043, 90, 1045, 46, 1047, 90, 1049, 47, 1051, 90, 1053, 48, 1055, 90, 1057, 50, 1059, 90, 1061, 51, 1063, 90, 1065, 53, 1067, 90, 1069, 54, 1071, 90, 1073, 56, 1075, 90, 1077, 57, 1079, 90, 1081, 59, 1083, 90, 1085, 61, 1087, 90, 1089, 64, 1091, 90, 1093, 65, 1095, 90, 1097, 66, 1099, 90, 1101, 67, 1103, 90, 1105, 68, 1107, 90, 1109, 72, 1111, 90, 1113, 73, 1115, 90, 1117, 74, 1119, 90, 1121, 90, 1123, 75, 1125, 90, 1127, 90, 1129, 76, 1131, 90, 1133, 90, 1135, 77, 1137, 90, 1139, 90, 1141, 78, 1143, 90, 1145, 90, 1147, 79, 1149, 90, 1151, 90, 1153, 80, 1155, 90, 1157, 90, 1159, 81, 1161, 90, 1163, 90, 1165, 82, 1167, 90, 1169, 90, 1171, 83, 1173, 90, 1175, 90, 1177, 84, 1179, 90, 1181, 90, 1183, 85, 1185, 90, 1187, 90, 1189, 86, 1191, 90, 1193, 90, 1195, 87, 1197, 90, 1199, 90, 1201, 88, 1203, 90, 1205, 89, 1207, 89, 1209, 89, 1211, 89, 1213, 90, 1215, 0, 70, 1218, 1, 70, 1221, 2, 70, 1224, 3, 69, 1227, 4, 70, 1230, 91, 1232, 23, 63, 1235, 70, 1237, 4, 91, 1240, 3, 69, 1243, 0, 70, 1246, 1, 70, 1249, 1, 70, 1252, 1, 70, 1255, 58, 1257, 89, 1259, 1, 70, 1262, 1, 70, 1265, 26, 5, 1268, 65, 1270, 44, 1272, 67, 1274, 46, 1276, 68, 1278, 90, 1280, 88, 1282, 1, 25, 28, 43, 45, 49, 55, 62, 63, 69, 70, 71, 90, 91, 25, 28, 31, 35, 35, 38, 41, 43, 45, 49, 52, 52, 55, 58, 58, 60, 62, 63, 69, 70, 89, 90, 31, 62, 70, 90, 35, 90, 35, 52, 90, 38, 41, 52, 58, 89, 90, 52, 55, 58, 89, 90, 49, 52, 90, 70, 90, 70, 90, 52, 90, 58, 90, 58, 60, 90, 60, 90, 62, 70, 90, 69, 70, 90, 70, 90, 70, 90, 69, 71, 90, 91, 91, 91, 90, 63];
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, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, 0, 14, 0, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 20, 0, 0, 0, 0, 12, 0, 0, 0, 0, 7, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 21, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 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, 2, 0, 0, 0, 2, 0, 1, 0, 1, 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, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 7, 0, 9, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 30, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 16, 2, 2, 18, 2, 2, 2, 2, 28, 20, 2, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 8, 10, 12, 0, 0, 1, 5, 7, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, -1, 1, 1, 1, 0, 1, -1, -2];
expr_children = [{}, {}, {}, 2..3, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 19..21, 2..2 union 22..22, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 26..26 union 28..28 union 30..30 union 32..32 union 34..34 union 36..36 union 38..38, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 41..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 union 65..65, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 68..83 union 85..85 union 87..87 union 89..89 union 91..91 union 93..93 union 95..95, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 98..119 union 121..121 union 123..123 union 125..125, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 128..150 union 152..152 union 154..154 union 156..156 union 158..158 union 160..160 union 162..162 union 164..164 union 166..166 union 168..168 union 170..170 union 172..172 union 174..174 union 176..176, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 180..180 union 182..182 union 184..184 union 186..186 union 188..188, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 191..195 union 197..197 union 199..199, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 202..208 union 210..210, {}, {}, {}, {}, {}, {}, {}, {}, {}, 213..220, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 223..230 union 232..232 union 234..234, {}, {}, {}, {}, {}, {}, {}, {}, 237..243, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 246..255, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 258..270, {}, {}, {}, 273..274, {}, {}, {}, {}, 277..279, {}, {}, {}, {}, 282..284, {}, {}, {}, 287..288, {}, {}, {}, {}, 291..293, {}, {}, {}, {}, {}, {}, {}, 296..301, {}, {}, {}, {}, 304..306, {}, {}, {}, {}, 309..311, {}, {}, {}, {}, 314..316, {}, {}, {}, {}, 319..321, {}, {}, {}, {}, 324..326, {}, {}, {}, {}, 329..331, {}, {}, {}, {}, 334..336, {}, {}, {}, {}, 339..341, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 345..345 union 347..347 union 349..349 union 351..351 union 353..353 union 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, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, 374..387 union 389..389, {}, {}, {}, {}, {}, 391..391 union 393..393 union 395..395, {}, {}, {}, 393..393 union 397..397 union 399..399, {}, {}, {}, 393..393 union 401..401 union 403..403, {}, {}, {}, 393..393 union 405..405 union 407..407, {}, {}, {}, 393..393 union 409..409 union 411..411, {}, {}, {}, 393..393 union 413..413 union 415..415, {}, {}, {}, 393..393 union 417..417 union 419..419, {}, {}, {}, 393..393 union 421..421 union 423..423, {}, {}, {}, 393..393 union 425..425 union 427..427, {}, {}, {}, 393..393 union 429..429 union 431..431, {}, {}, {}, 393..393 union 433..433 union 435..435, {}, {}, {}, 393..393 union 437..437 union 439..439, {}, {}, {}, 393..393 union 441..441 union 443..443, {}, {}, {}, 393..393 union 445..445 union 447..447, {}, {}, {}, 393..393 union 449..449 union 451..451, {}, {}, {}, 393..393 union 453..453 union 455..455, {}, {}, {}, 393..393 union 457..457 union 459..459, {}, {}, {}, 393..393 union 461..461 union 463..463, {}, {}, {}, 393..393 union 465..465 union 467..467, {}, {}, {}, 393..393 union 469..469 union 471..471, {}, {}, {}, 393..393 union 473..473 union 475..475, {}, {}, {}, 393..393 union 477..477 union 479..479, {}, {}, {}, 393..393 union 481..481 union 483..483, {}, {}, {}, 393..393 union 485..485 union 487..487, {}, {}, {}, 393..393 union 489..489 union 491..491, {}, {}, {}, 393..393 union 493..493 union 495..495, {}, {}, {}, 393..393 union 497..497 union 499..499, {}, {}, {}, 393..393 union 501..501 union 503..503, {}, {}, {}, 393..393 union 505..505 union 507..507, {}, {}, {}, 393..393 union 509..509 union 511..511, {}, {}, {}, 393..393 union 513..513 union 515..515, {}, {}, {}, 393..393 union 517..517 union 519..519, {}, {}, {}, 393..393 union 521..521 union 523..523, {}, {}, {}, 393..393 union 525..525 union 527..527, {}, {}, {}, 393..393 union 529..529 union 531..531, {}, {}, {}, 393..393 union 533..533 union 535..535, {}, {}, {}, 393..393 union 537..537 union 539..539, {}, {}, {}, 393..393 union 541..541 union 543..543, {}, {}, {}, 393..393 union 545..545 union 547..547, {}, {}, {}, 393..393 union 549..549 union 551..551, {}, {}, {}, 393..393 union 553..553 union 555..555, {}, {}, {}, 393..393 union 557..557 union 559..559, {}, {}, {}, 393..393 union 561..561 union 563..563, {}, {}, {}, 393..393 union 565..565 union 567..567, {}, {}, {}, 393..393 union 569..569 union 571..571, {}, {}, {}, 393..393 union 573..573 union 575..575, {}, {}, {}, 393..393 union 577..577 union 579..579, {}, {}, {}, 393..393 union 581..581 union 583..583, {}, {}, {}, 393..393 union 585..585 union 587..587, {}, {}, {}, 393..393 union 589..589 union 591..591, {}, {}, {}, 393..393 union 593..593 union 595..595, {}, {}, {}, 393..393 union 597..597 union 599..599, {}, {}, {}, 393..393 union 601..601 union 603..603, {}, {}, {}, 393..393 union 605..605 union 607..607, {}, {}, {}, 393..393 union 609..609 union 611..611, {}, {}, {}, 393..393 union 613..613 union 615..615, {}, {}, {}, 393..393 union 617..617 union 619..619, {}, {}, {}, 393..393 union 621..621 union 623..623, {}, {}, {}, 393..393 union 625..625 union 627..627, {}, {}, {}, 393..393 union 629..629 union 631..631, {}, {}, {}, 393..393 union 633..633 union 635..635, {}, {}, {}, 393..393 union 637..637 union 639..639, {}, {}, {}, 393..393 union 641..641 union 643..643, {}, {}, {}, 393..393 union 645..645 union 647..647, {}, {}, {}, 393..393 union 649..649 union 651..651, {}, {}, {}, 393..393 union 653..653 union 655..655, {}, {}, {}, 393..393 union 657..657 union 659..659, {}, {}, {}, 393..393 union 661..661 union 663..663, {}, {}, {}, 393..393 union 665..665 union 667..667, {}, 395..395 union 667..667 union 669..669, {}, 399..399 union 667..667 union 671..671, {}, 403..403 union 667..667 union 673..673, {}, 407..407 union 667..667 union 675..675, {}, 411..411 union 667..667 union 677..677, {}, 415..415 union 667..667 union 679..679, {}, 419..419 union 667..667 union 681..681, {}, 423..423 union 667..667 union 683..683, {}, 427..427 union 667..667 union 685..685, {}, 431..431 union 667..667 union 687..687, {}, 435..435 union 667..667 union 689..689, {}, 439..439 union 667..667 union 691..691, {}, 443..443 union 667..667 union 693..693, {}, 447..447 union 667..667 union 695..695, {}, 451..451 union 667..667 union 697..697, {}, 455..455 union 667..667 union 699..699, {}, 459..459 union 667..667 union 701..701, {}, 463..463 union 667..667 union 703..703, {}, 467..467 union 667..667 union 705..705, {}, 471..471 union 667..667 union 707..707, {}, 475..475 union 667..667 union 709..709, {}, {}, {}, 475..475 union 711..711 union 713..713, {}, 479..479 union 667..667 union 715..715, {}, {}, {}, 479..479 union 717..717 union 719..719, {}, 483..483 union 667..667 union 721..721, {}, 487..487 union 667..667 union 723..723, {}, {}, {}, 487..487 union 725..725 union 727..727, {}, 491..491 union 667..667 union 729..729, {}, 495..495 union 667..667 union 731..731, {}, {}, {}, 495..495 union 733..733 union 735..735, {}, 499..499 union 667..667 union 737..737, {}, 503..503 union 667..667 union 739..739, {}, {}, {}, 503..503 union 741..741 union 743..743, {}, 507..507 union 667..667 union 745..745, {}, {}, {}, 507..507 union 747..747 union 749..749, {}, 511..511 union 667..667 union 751..751, {}, 515..515 union 667..667 union 753..753, {}, {}, {}, 515..515 union 755..755 union 757..757, {}, 519..519 union 667..667 union 759..759, {}, 523..523 union 667..667 union 761..761, {}, {}, {}, 523..523 union 763..763 union 765..765, {}, 527..527 union 667..667 union 767..767, {}, 531..531 union 667..667 union 769..769, {}, 535..535 union 667..667 union 771..771, {}, 539..539 union 667..667 union 773..773, {}, {}, {}, 539..539 union 775..775 union 777..777, {}, 543..543 union 667..667 union 779..779, {}, {}, {}, 543..543 union 781..781 union 783..783, {}, 547..547 union 667..667 union 785..785, {}, 551..551 union 667..667 union 787..787, {}, {}, {}, 551..551 union 789..789 union 791..791, {}, 555..555 union 667..667 union 793..793, {}, {}, {}, 555..555 union 795..795 union 797..797, {}, 559..559 union 667..667 union 799..799, {}, {}, {}, 559..559 union 801..801 union 803..803, {}, 563..563 union 667..667 union 805..805, {}, 567..567 union 667..667 union 807..807, {}, {}, {}, 567..567 union 809..809 union 811..811, {}, 571..571 union 667..667 union 813..813, {}, {}, {}, 571..571 union 815..815 union 817..817, {}, 575..575 union 667..667 union 819..819, {}, {}, {}, 575..575 union 821..821 union 823..823, {}, 579..579 union 667..667 union 825..825, {}, {}, {}, 579..579 union 827..827 union 829..829, {}, 583..583 union 667..667 union 831..831, {}, {}, {}, 583..583 union 833..833 union 835..835, {}, 587..587 union 667..667 union 837..837, {}, {}, {}, 587..587 union 839..839 union 841..841, {}, 591..591 union 667..667 union 843..843, {}, {}, {}, 591..591 union 845..845 union 847..847, {}, 595..595 union 667..667 union 849..849, {}, {}, {}, 595..595 union 851..851 union 853..853, {}, 599..599 union 667..667 union 855..855, {}, 603..603 union 667..667 union 857..857, {}, {}, {}, 603..603 union 859..859 union 861..861, {}, 607..607 union 667..667 union 863..863, {}, 611..611 union 667..667 union 865..865, {}, 615..615 union 667..667 union 867..867, {}, 619..619 union 667..667 union 869..869, {}, 623..623 union 667..667 union 871..871, {}, 627..627 union 667..667 union 873..873, {}, 631..631 union 667..667 union 875..875, {}, 635..635 union 667..667 union 877..877, {}, 639..639 union 667..667 union 879..879, {}, 643..643 union 667..667 union 881..881, {}, 647..647 union 667..667 union 883..883, {}, 651..651 union 667..667 union 885..885, {}, 655..655 union 667..667 union 887..887, {}, 659..659 union 667..667 union 889..889, {}, 663..663 union 667..667 union 891..891, {}, {}, {}, 663..663 union 893..893 union 895..895, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}];
sets = [5..5 union 29..29 union 109..109, 6..6 union 30..30 union 110..110, 7..7 union 31..31 union 111..111, 8..8 union 32..32 union 112..112, 9..9 union 33..33 union 113..113, 10..10 union 34..34 union 114..114, 11..11 union 35..35 union 115..115, 12..12 union 36..36 union 116..116, 13..13 union 37..37 union 117..117, 14..14 union 38..38 union 118..118, 15..15 union 39..39 union 119..119, 16..16 union 40..40 union 120..120, 17..17 union 41..41 union 121..121, 18..18 union 42..42 union 122..122, 19..19, 20..20, 21..21, 22..22, 23..23 union 43..43 union 108..108];