fibonacci(0, 0).
fibonacci(1, 1).
fibonacci(10, 55).
fibonacci(100, 354224848179261915075).
fibonacci(1000, 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875).
fibonacci(10000, 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875).

clause(2, fib_case(0), true).
clause(3, fib_case(1), true).
clause(4, fib_case(10), true).
clause(5, fib_case(100), true).
clause(6, fib_case(1000), true).
clause(7, fib_case(10000), true).
clause(8, fib(var('N'), var('Value')), fib_pair(var('N'), var('Value'), anonymous(1))).
clause(9, fib_pair(0, 0, 1), true).
clause(10,
       fib_pair(var('N'), var('F'), var('G')),
       (var('N') > 0,
        var('Half') is var('N') // 2,
        fib_pair(var('Half'), var('A'), var('B')),
        var('Twob') is var('B') * 2,
        var('Twobminusa') is var('Twob') - var('A'),
        var('C') is var('A') * var('Twobminusa'),
        var('Aa') is var('A') * var('A'),
        var('Bb') is var('B') * var('B'),
        var('D') is var('Aa') + var('Bb'),
        0 is var('N') mod 2,
        var('F') = var('C'),
        var('G') = var('D'))).
clause(11,
       fib_pair(var('N'), var('F'), var('G')),
       (var('N') > 0,
        var('Half') is var('N') // 2,
        fib_pair(var('Half'), var('A'), var('B')),
        var('Twob') is var('B') * 2,
        var('Twobminusa') is var('Twob') - var('A'),
        var('C') is var('A') * var('Twobminusa'),
        var('Aa') is var('A') * var('A'),
        var('Bb') is var('B') * var('B'),
        var('D') is var('Aa') + var('Bb'),
        1 is var('N') mod 2,
        var('Next') is var('C') + var('D'),
        var('F') = var('D'),
        var('G') = var('Next'))).
clause(12, fibonacci(var('N'), var('Value')), (fib_case(var('N')), fib(var('N'), var('Value')))).

step(fibonacci(0, 0), rule(12), ['N' = 0, 'Value' = 0], [fib_case(0), fib(0, 0)]).
step(fib_case(0), fact(2), [], []).
step(fib(0, 0), rule(8), ['N' = 0, 'Value' = 0], [fib_pair(0, 0, 1)]).
step(fib_pair(0, 0, 1), fact(9), [], []).
step(fibonacci(1, 1), rule(12), ['N' = 1, 'Value' = 1], [fib_case(1), fib(1, 1)]).
step(fib_case(1), fact(3), [], []).
step(fib(1, 1), rule(8), ['N' = 1, 'Value' = 1], [fib_pair(1, 1, 1)]).
step(fib_pair(1, 1, 1),
     rule(11),
     ['N' = 1,
      'F' = 1,
      'G' = 1,
      'Half' = 0,
      'A' = 0,
      'B' = 1,
      'Twob' = 2,
      'Twobminusa' = 2,
      'C' = 0,
      'Aa' = 0,
      'Bb' = 1,
      'D' = 1,
      'Next' = 1],
     [1 > 0,
      0 is 1 // 2,
      fib_pair(0, 0, 1),
      2 is 1 * 2,
      2 is 2 - 0,
      0 is 0 * 2,
      0 is 0 * 0,
      1 is 1 * 1,
      1 is 0 + 1,
      1 is 1 mod 2,
      1 is 0 + 1,
      1 = 1,
      1 = 1]).
step(1 > 0, builtin, [], []).
step(0 is 1 // 2, builtin, [], []).
step(2 is 1 * 2, builtin, [], []).
step(2 is 2 - 0, builtin, [], []).
step(0 is 0 * 2, builtin, [], []).
step(0 is 0 * 0, builtin, [], []).
step(1 is 1 * 1, builtin, [], []).
step(1 is 0 + 1, builtin, [], []).
step(1 is 1 mod 2, builtin, [], []).
step(1 = 1, builtin, [], []).
step(fibonacci(10, 55), rule(12), ['N' = 10, 'Value' = 55], [fib_case(10), fib(10, 55)]).
step(fib_case(10), fact(4), [], []).
step(fib(10, 55), rule(8), ['N' = 10, 'Value' = 55], [fib_pair(10, 55, 89)]).
step(fib_pair(10, 55, 89),
     rule(10),
     ['N' = 10,
      'F' = 55,
      'G' = 89,
      'Half' = 5,
      'A' = 5,
      'B' = 8,
      'Twob' = 16,
      'Twobminusa' = 11,
      'C' = 55,
      'Aa' = 25,
      'Bb' = 64,
      'D' = 89],
     [10 > 0,
      5 is 10 // 2,
      fib_pair(5, 5, 8),
      16 is 8 * 2,
      11 is 16 - 5,
      55 is 5 * 11,
      25 is 5 * 5,
      64 is 8 * 8,
      89 is 25 + 64,
      0 is 10 mod 2,
      55 = 55,
      89 = 89]).
step(10 > 0, builtin, [], []).
step(5 is 10 // 2, builtin, [], []).
step(fib_pair(5, 5, 8),
     rule(11),
     ['N' = 5,
      'F' = 5,
      'G' = 8,
      'Half' = 2,
      'A' = 1,
      'B' = 2,
      'Twob' = 4,
      'Twobminusa' = 3,
      'C' = 3,
      'Aa' = 1,
      'Bb' = 4,
      'D' = 5,
      'Next' = 8],
     [5 > 0,
      2 is 5 // 2,
      fib_pair(2, 1, 2),
      4 is 2 * 2,
      3 is 4 - 1,
      3 is 1 * 3,
      1 is 1 * 1,
      4 is 2 * 2,
      5 is 1 + 4,
      1 is 5 mod 2,
      8 is 3 + 5,
      5 = 5,
      8 = 8]).
step(5 > 0, builtin, [], []).
step(2 is 5 // 2, builtin, [], []).
step(fib_pair(2, 1, 2),
     rule(10),
     ['N' = 2,
      'F' = 1,
      'G' = 2,
      'Half' = 1,
      'A' = 1,
      'B' = 1,
      'Twob' = 2,
      'Twobminusa' = 1,
      'C' = 1,
      'Aa' = 1,
      'Bb' = 1,
      'D' = 2],
     [2 > 0,
      1 is 2 // 2,
      fib_pair(1, 1, 1),
      2 is 1 * 2,
      1 is 2 - 1,
      1 is 1 * 1,
      1 is 1 * 1,
      1 is 1 * 1,
      2 is 1 + 1,
      0 is 2 mod 2,
      1 = 1,
      2 = 2]).
step(2 > 0, builtin, [], []).
step(1 is 2 // 2, builtin, [], []).
step(1 is 2 - 1, builtin, [], []).
step(2 is 1 + 1, builtin, [], []).
step(0 is 2 mod 2, builtin, [], []).
step(2 = 2, builtin, [], []).
step(4 is 2 * 2, builtin, [], []).
step(3 is 4 - 1, builtin, [], []).
step(3 is 1 * 3, builtin, [], []).
step(5 is 1 + 4, builtin, [], []).
step(1 is 5 mod 2, builtin, [], []).
step(8 is 3 + 5, builtin, [], []).
step(5 = 5, builtin, [], []).
step(8 = 8, builtin, [], []).
step(16 is 8 * 2, builtin, [], []).
step(11 is 16 - 5, builtin, [], []).
step(55 is 5 * 11, builtin, [], []).
step(25 is 5 * 5, builtin, [], []).
step(64 is 8 * 8, builtin, [], []).
step(89 is 25 + 64, builtin, [], []).
step(0 is 10 mod 2, builtin, [], []).
step(55 = 55, builtin, [], []).
step(89 = 89, builtin, [], []).
step(fibonacci(100, 354224848179261915075),
     rule(12),
     ['N' = 100, 'Value' = 354224848179261915075],
     [fib_case(100), fib(100, 354224848179261915075)]).
step(fib_case(100), fact(5), [], []).
step(fib(100, 354224848179261915075),
     rule(8),
     ['N' = 100, 'Value' = 354224848179261915075],
     [fib_pair(100, 354224848179261915075, 573147844013817084101)]).
step(fib_pair(100, 354224848179261915075, 573147844013817084101),
     rule(10),
     ['N' = 100,
      'F' = 354224848179261915075,
      'G' = 573147844013817084101,
      'Half' = 50,
      'A' = 12586269025,
      'B' = 20365011074,
      'Twob' = 40730022148,
      'Twobminusa' = 28143753123,
      'C' = 354224848179261915075,
      'Aa' = 158414167969674450625,
      'Bb' = 414733676044142633476,
      'D' = 573147844013817084101],
     [100 > 0,
      50 is 100 // 2,
      fib_pair(50, 12586269025, 20365011074),
      40730022148 is 20365011074 * 2,
      28143753123 is 40730022148 - 12586269025,
      354224848179261915075 is 12586269025 * 28143753123,
      158414167969674450625 is 12586269025 * 12586269025,
      414733676044142633476 is 20365011074 * 20365011074,
      573147844013817084101 is 158414167969674450625 + 414733676044142633476,
      0 is 100 mod 2,
      354224848179261915075 = 354224848179261915075,
      573147844013817084101 = 573147844013817084101]).
step(100 > 0, builtin, [], []).
step(50 is 100 // 2, builtin, [], []).
step(fib_pair(50, 12586269025, 20365011074),
     rule(10),
     ['N' = 50,
      'F' = 12586269025,
      'G' = 20365011074,
      'Half' = 25,
      'A' = 75025,
      'B' = 121393,
      'Twob' = 242786,
      'Twobminusa' = 167761,
      'C' = 12586269025,
      'Aa' = 5628750625,
      'Bb' = 14736260449,
      'D' = 20365011074],
     [50 > 0,
      25 is 50 // 2,
      fib_pair(25, 75025, 121393),
      242786 is 121393 * 2,
      167761 is 242786 - 75025,
      12586269025 is 75025 * 167761,
      5628750625 is 75025 * 75025,
      14736260449 is 121393 * 121393,
      20365011074 is 5628750625 + 14736260449,
      0 is 50 mod 2,
      12586269025 = 12586269025,
      20365011074 = 20365011074]).
step(50 > 0, builtin, [], []).
step(25 is 50 // 2, builtin, [], []).
step(fib_pair(25, 75025, 121393),
     rule(11),
     ['N' = 25,
      'F' = 75025,
      'G' = 121393,
      'Half' = 12,
      'A' = 144,
      'B' = 233,
      'Twob' = 466,
      'Twobminusa' = 322,
      'C' = 46368,
      'Aa' = 20736,
      'Bb' = 54289,
      'D' = 75025,
      'Next' = 121393],
     [25 > 0,
      12 is 25 // 2,
      fib_pair(12, 144, 233),
      466 is 233 * 2,
      322 is 466 - 144,
      46368 is 144 * 322,
      20736 is 144 * 144,
      54289 is 233 * 233,
      75025 is 20736 + 54289,
      1 is 25 mod 2,
      121393 is 46368 + 75025,
      75025 = 75025,
      121393 = 121393]).
step(25 > 0, builtin, [], []).
step(12 is 25 // 2, builtin, [], []).
step(fib_pair(12, 144, 233),
     rule(10),
     ['N' = 12,
      'F' = 144,
      'G' = 233,
      'Half' = 6,
      'A' = 8,
      'B' = 13,
      'Twob' = 26,
      'Twobminusa' = 18,
      'C' = 144,
      'Aa' = 64,
      'Bb' = 169,
      'D' = 233],
     [12 > 0,
      6 is 12 // 2,
      fib_pair(6, 8, 13),
      26 is 13 * 2,
      18 is 26 - 8,
      144 is 8 * 18,
      64 is 8 * 8,
      169 is 13 * 13,
      233 is 64 + 169,
      0 is 12 mod 2,
      144 = 144,
      233 = 233]).
step(12 > 0, builtin, [], []).
step(6 is 12 // 2, builtin, [], []).
step(fib_pair(6, 8, 13),
     rule(10),
     ['N' = 6,
      'F' = 8,
      'G' = 13,
      'Half' = 3,
      'A' = 2,
      'B' = 3,
      'Twob' = 6,
      'Twobminusa' = 4,
      'C' = 8,
      'Aa' = 4,
      'Bb' = 9,
      'D' = 13],
     [6 > 0,
      3 is 6 // 2,
      fib_pair(3, 2, 3),
      6 is 3 * 2,
      4 is 6 - 2,
      8 is 2 * 4,
      4 is 2 * 2,
      9 is 3 * 3,
      13 is 4 + 9,
      0 is 6 mod 2,
      8 = 8,
      13 = 13]).
step(6 > 0, builtin, [], []).
step(3 is 6 // 2, builtin, [], []).
step(fib_pair(3, 2, 3),
     rule(11),
     ['N' = 3,
      'F' = 2,
      'G' = 3,
      'Half' = 1,
      'A' = 1,
      'B' = 1,
      'Twob' = 2,
      'Twobminusa' = 1,
      'C' = 1,
      'Aa' = 1,
      'Bb' = 1,
      'D' = 2,
      'Next' = 3],
     [3 > 0,
      1 is 3 // 2,
      fib_pair(1, 1, 1),
      2 is 1 * 2,
      1 is 2 - 1,
      1 is 1 * 1,
      1 is 1 * 1,
      1 is 1 * 1,
      2 is 1 + 1,
      1 is 3 mod 2,
      3 is 1 + 2,
      2 = 2,
      3 = 3]).
step(3 > 0, builtin, [], []).
step(1 is 3 // 2, builtin, [], []).
step(1 is 3 mod 2, builtin, [], []).
step(3 is 1 + 2, builtin, [], []).
step(3 = 3, builtin, [], []).
step(6 is 3 * 2, builtin, [], []).
step(4 is 6 - 2, builtin, [], []).
step(8 is 2 * 4, builtin, [], []).
step(9 is 3 * 3, builtin, [], []).
step(13 is 4 + 9, builtin, [], []).
step(0 is 6 mod 2, builtin, [], []).
step(13 = 13, builtin, [], []).
step(26 is 13 * 2, builtin, [], []).
step(18 is 26 - 8, builtin, [], []).
step(144 is 8 * 18, builtin, [], []).
step(169 is 13 * 13, builtin, [], []).
step(233 is 64 + 169, builtin, [], []).
step(0 is 12 mod 2, builtin, [], []).
step(144 = 144, builtin, [], []).
step(233 = 233, builtin, [], []).
step(466 is 233 * 2, builtin, [], []).
step(322 is 466 - 144, builtin, [], []).
step(46368 is 144 * 322, builtin, [], []).
step(20736 is 144 * 144, builtin, [], []).
step(54289 is 233 * 233, builtin, [], []).
step(75025 is 20736 + 54289, builtin, [], []).
step(1 is 25 mod 2, builtin, [], []).
step(121393 is 46368 + 75025, builtin, [], []).
step(75025 = 75025, builtin, [], []).
step(121393 = 121393, builtin, [], []).
step(242786 is 121393 * 2, builtin, [], []).
step(167761 is 242786 - 75025, builtin, [], []).
step(12586269025 is 75025 * 167761, builtin, [], []).
step(5628750625 is 75025 * 75025, builtin, [], []).
step(14736260449 is 121393 * 121393, builtin, [], []).
step(20365011074 is 5628750625 + 14736260449, builtin, [], []).
step(0 is 50 mod 2, builtin, [], []).
step(12586269025 = 12586269025, builtin, [], []).
step(20365011074 = 20365011074, builtin, [], []).
step(40730022148 is 20365011074 * 2, builtin, [], []).
step(28143753123 is 40730022148 - 12586269025, builtin, [], []).
step(354224848179261915075 is 12586269025 * 28143753123, builtin, [], []).
step(158414167969674450625 is 12586269025 * 12586269025, builtin, [], []).
step(414733676044142633476 is 20365011074 * 20365011074, builtin, [], []).
step(573147844013817084101 is 158414167969674450625 + 414733676044142633476, builtin, [], []).
step(0 is 100 mod 2, builtin, [], []).
step(354224848179261915075 = 354224848179261915075, builtin, [], []).
step(573147844013817084101 = 573147844013817084101, builtin, [], []).
step(fibonacci(1000, 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875),
     rule(12),
     ['N' = 1000,
      'Value' = 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875],
     [fib_case(1000),
      fib(1000, 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875)]).
step(fib_case(1000), fact(6), [], []).
step(fib(1000, 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875),
     rule(8),
     ['N' = 1000,
      'Value' = 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875],
     [fib_pair(1000, 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875, 70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501)]).
step(fib_pair(1000, 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875, 70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501),
     rule(10),
     ['N' = 1000,
      'F' = 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875,
      'G' = 70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501,
      'Half' = 500,
      'A' = 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125,
      'B' = 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626,
      'Twob' = 451183032323872661745025390072144144092022649827516381177277732836949255477373766810031974105593936997252,
      'Twobminusa' = 311759807762174781605301007201736860141952393239819073913168769888623683854510476118474315229371415703127,
      'C' = 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875,
      'Aa' = 19438835547181635041596396415865294747559575831069137016545616216954503763688963053816123829809193659535915661080641869480232607381532114794348172492750360328240298056819461819264536306335141533339064759515625,
      'Bb' = 50891532164241180780238858461318255022621694005289595726059288870200033354507970525926125664753418073951834788161124121607953755883918108852757839560623760945627041054378677553861062461354950368906180563887876,
      'D' = 70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501],
     [1000 > 0,
      500 is 1000 // 2,
      fib_pair(500, 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125, 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626),
      451183032323872661745025390072144144092022649827516381177277732836949255477373766810031974105593936997252 is 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626 * 2,
      311759807762174781605301007201736860141952393239819073913168769888623683854510476118474315229371415703127 is 451183032323872661745025390072144144092022649827516381177277732836949255477373766810031974105593936997252 - 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125,
      43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875 is 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125 * 311759807762174781605301007201736860141952393239819073913168769888623683854510476118474315229371415703127,
      19438835547181635041596396415865294747559575831069137016545616216954503763688963053816123829809193659535915661080641869480232607381532114794348172492750360328240298056819461819264536306335141533339064759515625 is 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125 * 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125,
      50891532164241180780238858461318255022621694005289595726059288870200033354507970525926125664753418073951834788161124121607953755883918108852757839560623760945627041054378677553861062461354950368906180563887876 is 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626 * 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626,
      70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501 is 19438835547181635041596396415865294747559575831069137016545616216954503763688963053816123829809193659535915661080641869480232607381532114794348172492750360328240298056819461819264536306335141533339064759515625 + 50891532164241180780238858461318255022621694005289595726059288870200033354507970525926125664753418073951834788161124121607953755883918108852757839560623760945627041054378677553861062461354950368906180563887876,
      0 is 1000 mod 2,
      43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875 = 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875,
      70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501 = 70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501]).
step(1000 > 0, builtin, [], []).
step(500 is 1000 // 2, builtin, [], []).
step(fib_pair(500, 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125, 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626),
     rule(10),
     ['N' = 500,
      'F' = 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125,
      'G' = 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626,
      'Half' = 250,
      'A' = 7896325826131730509282738943634332893686268675876375,
      'B' = 12776523572924732586037033894655031898659556447352249,
      'Twob' = 25553047145849465172074067789310063797319112894704498,
      'Twobminusa' = 17656721319717734662791328845675730903632844218828123,
      'C' = 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125,
      'Aa' = 62351961552434956321060201440347372028390478647963814782633753977724736770902095223694863045874283140625,
      'Bb' = 163239554609501374551452493595724700017620846265794375806005112440749890967784788181321124006922685358001,
      'D' = 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626],
     [500 > 0,
      250 is 500 // 2,
      fib_pair(250, 7896325826131730509282738943634332893686268675876375, 12776523572924732586037033894655031898659556447352249),
      25553047145849465172074067789310063797319112894704498 is 12776523572924732586037033894655031898659556447352249 * 2,
      17656721319717734662791328845675730903632844218828123 is 25553047145849465172074067789310063797319112894704498 - 7896325826131730509282738943634332893686268675876375,
      139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125 is 7896325826131730509282738943634332893686268675876375 * 17656721319717734662791328845675730903632844218828123,
      62351961552434956321060201440347372028390478647963814782633753977724736770902095223694863045874283140625 is 7896325826131730509282738943634332893686268675876375 * 7896325826131730509282738943634332893686268675876375,
      163239554609501374551452493595724700017620846265794375806005112440749890967784788181321124006922685358001 is 12776523572924732586037033894655031898659556447352249 * 12776523572924732586037033894655031898659556447352249,
      225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626 is 62351961552434956321060201440347372028390478647963814782633753977724736770902095223694863045874283140625 + 163239554609501374551452493595724700017620846265794375806005112440749890967784788181321124006922685358001,
      0 is 500 mod 2,
      139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125 = 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125,
      225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626 = 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626]).
step(500 > 0, builtin, [], []).
step(250 is 500 // 2, builtin, [], []).
step(fib_pair(250, 7896325826131730509282738943634332893686268675876375, 12776523572924732586037033894655031898659556447352249),
     rule(10),
     ['N' = 250,
      'F' = 7896325826131730509282738943634332893686268675876375,
      'G' = 12776523572924732586037033894655031898659556447352249,
      'Half' = 125,
      'A' = 59425114757512643212875125,
      'B' = 96151855463018422468774568,
      'Twob' = 192303710926036844937549136,
      'Twobminusa' = 132878596168524201724674011,
      'C' = 7896325826131730509282738943634332893686268675876375,
      'Aa' = 3531344263943546932558265769135146180726568843765625,
      'Bb' = 9245179308981185653478768125519885717932987603586624,
      'D' = 12776523572924732586037033894655031898659556447352249],
     [250 > 0,
      125 is 250 // 2,
      fib_pair(125, 59425114757512643212875125, 96151855463018422468774568),
      192303710926036844937549136 is 96151855463018422468774568 * 2,
      132878596168524201724674011 is 192303710926036844937549136 - 59425114757512643212875125,
      7896325826131730509282738943634332893686268675876375 is 59425114757512643212875125 * 132878596168524201724674011,
      3531344263943546932558265769135146180726568843765625 is 59425114757512643212875125 * 59425114757512643212875125,
      9245179308981185653478768125519885717932987603586624 is 96151855463018422468774568 * 96151855463018422468774568,
      12776523572924732586037033894655031898659556447352249 is 3531344263943546932558265769135146180726568843765625 + 9245179308981185653478768125519885717932987603586624,
      0 is 250 mod 2,
      7896325826131730509282738943634332893686268675876375 = 7896325826131730509282738943634332893686268675876375,
      12776523572924732586037033894655031898659556447352249 = 12776523572924732586037033894655031898659556447352249]).
step(250 > 0, builtin, [], []).
step(125 is 250 // 2, builtin, [], []).
step(fib_pair(125, 59425114757512643212875125, 96151855463018422468774568),
     rule(11),
     ['N' = 125,
      'F' = 59425114757512643212875125,
      'G' = 96151855463018422468774568,
      'Half' = 62,
      'A' = 4052739537881,
      'B' = 6557470319842,
      'Twob' = 13114940639684,
      'Twobminusa' = 9062201101803,
      'C' = 36726740705505779255899443,
      'Aa' = 16424697761903901433970161,
      'Bb' = 43000416995608741778904964,
      'D' = 59425114757512643212875125,
      'Next' = 96151855463018422468774568],
     [125 > 0,
      62 is 125 // 2,
      fib_pair(62, 4052739537881, 6557470319842),
      13114940639684 is 6557470319842 * 2,
      9062201101803 is 13114940639684 - 4052739537881,
      36726740705505779255899443 is 4052739537881 * 9062201101803,
      16424697761903901433970161 is 4052739537881 * 4052739537881,
      43000416995608741778904964 is 6557470319842 * 6557470319842,
      59425114757512643212875125 is 16424697761903901433970161 + 43000416995608741778904964,
      1 is 125 mod 2,
      96151855463018422468774568 is 36726740705505779255899443 + 59425114757512643212875125,
      59425114757512643212875125 = 59425114757512643212875125,
      96151855463018422468774568 = 96151855463018422468774568]).
step(125 > 0, builtin, [], []).
step(62 is 125 // 2, builtin, [], []).
step(fib_pair(62, 4052739537881, 6557470319842),
     rule(10),
     ['N' = 62,
      'F' = 4052739537881,
      'G' = 6557470319842,
      'Half' = 31,
      'A' = 1346269,
      'B' = 2178309,
      'Twob' = 4356618,
      'Twobminusa' = 3010349,
      'C' = 4052739537881,
      'Aa' = 1812440220361,
      'Bb' = 4745030099481,
      'D' = 6557470319842],
     [62 > 0,
      31 is 62 // 2,
      fib_pair(31, 1346269, 2178309),
      4356618 is 2178309 * 2,
      3010349 is 4356618 - 1346269,
      4052739537881 is 1346269 * 3010349,
      1812440220361 is 1346269 * 1346269,
      4745030099481 is 2178309 * 2178309,
      6557470319842 is 1812440220361 + 4745030099481,
      0 is 62 mod 2,
      4052739537881 = 4052739537881,
      6557470319842 = 6557470319842]).
step(62 > 0, builtin, [], []).
step(31 is 62 // 2, builtin, [], []).
step(fib_pair(31, 1346269, 2178309),
     rule(11),
     ['N' = 31,
      'F' = 1346269,
      'G' = 2178309,
      'Half' = 15,
      'A' = 610,
      'B' = 987,
      'Twob' = 1974,
      'Twobminusa' = 1364,
      'C' = 832040,
      'Aa' = 372100,
      'Bb' = 974169,
      'D' = 1346269,
      'Next' = 2178309],
     [31 > 0,
      15 is 31 // 2,
      fib_pair(15, 610, 987),
      1974 is 987 * 2,
      1364 is 1974 - 610,
      832040 is 610 * 1364,
      372100 is 610 * 610,
      974169 is 987 * 987,
      1346269 is 372100 + 974169,
      1 is 31 mod 2,
      2178309 is 832040 + 1346269,
      1346269 = 1346269,
      2178309 = 2178309]).
step(31 > 0, builtin, [], []).
step(15 is 31 // 2, builtin, [], []).
step(fib_pair(15, 610, 987),
     rule(11),
     ['N' = 15,
      'F' = 610,
      'G' = 987,
      'Half' = 7,
      'A' = 13,
      'B' = 21,
      'Twob' = 42,
      'Twobminusa' = 29,
      'C' = 377,
      'Aa' = 169,
      'Bb' = 441,
      'D' = 610,
      'Next' = 987],
     [15 > 0,
      7 is 15 // 2,
      fib_pair(7, 13, 21),
      42 is 21 * 2,
      29 is 42 - 13,
      377 is 13 * 29,
      169 is 13 * 13,
      441 is 21 * 21,
      610 is 169 + 441,
      1 is 15 mod 2,
      987 is 377 + 610,
      610 = 610,
      987 = 987]).
step(15 > 0, builtin, [], []).
step(7 is 15 // 2, builtin, [], []).
step(fib_pair(7, 13, 21),
     rule(11),
     ['N' = 7,
      'F' = 13,
      'G' = 21,
      'Half' = 3,
      'A' = 2,
      'B' = 3,
      'Twob' = 6,
      'Twobminusa' = 4,
      'C' = 8,
      'Aa' = 4,
      'Bb' = 9,
      'D' = 13,
      'Next' = 21],
     [7 > 0,
      3 is 7 // 2,
      fib_pair(3, 2, 3),
      6 is 3 * 2,
      4 is 6 - 2,
      8 is 2 * 4,
      4 is 2 * 2,
      9 is 3 * 3,
      13 is 4 + 9,
      1 is 7 mod 2,
      21 is 8 + 13,
      13 = 13,
      21 = 21]).
step(7 > 0, builtin, [], []).
step(3 is 7 // 2, builtin, [], []).
step(1 is 7 mod 2, builtin, [], []).
step(21 is 8 + 13, builtin, [], []).
step(21 = 21, builtin, [], []).
step(42 is 21 * 2, builtin, [], []).
step(29 is 42 - 13, builtin, [], []).
step(377 is 13 * 29, builtin, [], []).
step(441 is 21 * 21, builtin, [], []).
step(610 is 169 + 441, builtin, [], []).
step(1 is 15 mod 2, builtin, [], []).
step(987 is 377 + 610, builtin, [], []).
step(610 = 610, builtin, [], []).
step(987 = 987, builtin, [], []).
step(1974 is 987 * 2, builtin, [], []).
step(1364 is 1974 - 610, builtin, [], []).
step(832040 is 610 * 1364, builtin, [], []).
step(372100 is 610 * 610, builtin, [], []).
step(974169 is 987 * 987, builtin, [], []).
step(1346269 is 372100 + 974169, builtin, [], []).
step(1 is 31 mod 2, builtin, [], []).
step(2178309 is 832040 + 1346269, builtin, [], []).
step(1346269 = 1346269, builtin, [], []).
step(2178309 = 2178309, builtin, [], []).
step(4356618 is 2178309 * 2, builtin, [], []).
step(3010349 is 4356618 - 1346269, builtin, [], []).
step(4052739537881 is 1346269 * 3010349, builtin, [], []).
step(1812440220361 is 1346269 * 1346269, builtin, [], []).
step(4745030099481 is 2178309 * 2178309, builtin, [], []).
step(6557470319842 is 1812440220361 + 4745030099481, builtin, [], []).
step(0 is 62 mod 2, builtin, [], []).
step(4052739537881 = 4052739537881, builtin, [], []).
step(6557470319842 = 6557470319842, builtin, [], []).
step(13114940639684 is 6557470319842 * 2, builtin, [], []).
step(9062201101803 is 13114940639684 - 4052739537881, builtin, [], []).
step(36726740705505779255899443 is 4052739537881 * 9062201101803, builtin, [], []).
step(16424697761903901433970161 is 4052739537881 * 4052739537881, builtin, [], []).
step(43000416995608741778904964 is 6557470319842 * 6557470319842, builtin, [], []).
step(59425114757512643212875125 is 16424697761903901433970161 + 43000416995608741778904964,
     builtin,
     [],
     []).
step(1 is 125 mod 2, builtin, [], []).
step(96151855463018422468774568 is 36726740705505779255899443 + 59425114757512643212875125,
     builtin,
     [],
     []).
step(59425114757512643212875125 = 59425114757512643212875125, builtin, [], []).
step(96151855463018422468774568 = 96151855463018422468774568, builtin, [], []).
step(192303710926036844937549136 is 96151855463018422468774568 * 2, builtin, [], []).
step(132878596168524201724674011 is 192303710926036844937549136 - 59425114757512643212875125,
     builtin,
     [],
     []).
step(7896325826131730509282738943634332893686268675876375 is 59425114757512643212875125 * 132878596168524201724674011,
     builtin,
     [],
     []).
step(3531344263943546932558265769135146180726568843765625 is 59425114757512643212875125 * 59425114757512643212875125,
     builtin,
     [],
     []).
step(9245179308981185653478768125519885717932987603586624 is 96151855463018422468774568 * 96151855463018422468774568,
     builtin,
     [],
     []).
step(12776523572924732586037033894655031898659556447352249 is 3531344263943546932558265769135146180726568843765625 + 9245179308981185653478768125519885717932987603586624,
     builtin,
     [],
     []).
step(0 is 250 mod 2, builtin, [], []).
step(7896325826131730509282738943634332893686268675876375 = 7896325826131730509282738943634332893686268675876375,
     builtin,
     [],
     []).
step(12776523572924732586037033894655031898659556447352249 = 12776523572924732586037033894655031898659556447352249,
     builtin,
     [],
     []).
step(25553047145849465172074067789310063797319112894704498 is 12776523572924732586037033894655031898659556447352249 * 2,
     builtin,
     [],
     []).
step(17656721319717734662791328845675730903632844218828123 is 25553047145849465172074067789310063797319112894704498 - 7896325826131730509282738943634332893686268675876375,
     builtin,
     [],
     []).
step(139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125 is 7896325826131730509282738943634332893686268675876375 * 17656721319717734662791328845675730903632844218828123,
     builtin,
     [],
     []).
step(62351961552434956321060201440347372028390478647963814782633753977724736770902095223694863045874283140625 is 7896325826131730509282738943634332893686268675876375 * 7896325826131730509282738943634332893686268675876375,
     builtin,
     [],
     []).
step(163239554609501374551452493595724700017620846265794375806005112440749890967784788181321124006922685358001 is 12776523572924732586037033894655031898659556447352249 * 12776523572924732586037033894655031898659556447352249,
     builtin,
     [],
     []).
step(225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626 is 62351961552434956321060201440347372028390478647963814782633753977724736770902095223694863045874283140625 + 163239554609501374551452493595724700017620846265794375806005112440749890967784788181321124006922685358001,
     builtin,
     [],
     []).
step(0 is 500 mod 2, builtin, [], []).
step(139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125 = 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125,
     builtin,
     [],
     []).
step(225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626 = 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626,
     builtin,
     [],
     []).
step(451183032323872661745025390072144144092022649827516381177277732836949255477373766810031974105593936997252 is 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626 * 2,
     builtin,
     [],
     []).
step(311759807762174781605301007201736860141952393239819073913168769888623683854510476118474315229371415703127 is 451183032323872661745025390072144144092022649827516381177277732836949255477373766810031974105593936997252 - 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125,
     builtin,
     [],
     []).
step(43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875 is 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125 * 311759807762174781605301007201736860141952393239819073913168769888623683854510476118474315229371415703127,
     builtin,
     [],
     []).
step(19438835547181635041596396415865294747559575831069137016545616216954503763688963053816123829809193659535915661080641869480232607381532114794348172492750360328240298056819461819264536306335141533339064759515625 is 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125 * 139423224561697880139724382870407283950070256587697307264108962948325571622863290691557658876222521294125,
     builtin,
     [],
     []).
step(50891532164241180780238858461318255022621694005289595726059288870200033354507970525926125664753418073951834788161124121607953755883918108852757839560623760945627041054378677553861062461354950368906180563887876 is 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626 * 225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626,
     builtin,
     [],
     []).
step(70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501 is 19438835547181635041596396415865294747559575831069137016545616216954503763688963053816123829809193659535915661080641869480232607381532114794348172492750360328240298056819461819264536306335141533339064759515625 + 50891532164241180780238858461318255022621694005289595726059288870200033354507970525926125664753418073951834788161124121607953755883918108852757839560623760945627041054378677553861062461354950368906180563887876,
     builtin,
     [],
     []).
step(0 is 1000 mod 2, builtin, [], []).
step(43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875 = 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875,
     builtin,
     [],
     []).
step(70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501 = 70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501,
     builtin,
     [],
     []).
step(fibonacci(10000, 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875),
     rule(12),
     ['N' = 10000,
      'Value' = 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875],
     [fib_case(10000),
      fib(10000, 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875)]).
step(fib_case(10000), fact(7), [], []).
step(fib(10000, 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875),
     rule(8),
     ['N' = 10000,
      'Value' = 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875],
     [fib_pair(10000, 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875, 54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501)]).
step(fib_pair(10000, 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875, 54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501),
     rule(10),
     ['N' = 10000,
      'F' = 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875,
      'G' = 54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501,
      'Half' = 5000,
      'A' = 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125,
      'B' = 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626,
      'Twob' = 12552605600977914172070506216699368110957057405472914878051648897855874513623326528951767423055612500659969380499693639601297160166080215169420665375193124370147280844573598479865231594211949421714190974685640702614954283750024353748614312032459931665178275559449947708725555259756459011000520954272216727418180020843073830977264678481513975948245197207183840613749853511200723730708660889363830309391483703920142179888030638600257148215325514109581296305502732951058243754425570979330203467511797160635968805927747476374000241475648386324022798401094848068881672479452551531802381829026026434264101976129664049566741167578648218104899434373714654479566000041583555609007860879750137325375341357605828539569634045134176138992462222815817906627804797059310112164457197431764731558939804931351431398374451311756481337199094992436318595763202123846391124287865386649288438533129234085868455786742359664779285790570802527750685280936034757851842967160222556110088508396764531134791892863606608608653730155485851637514741383452336457297682638462941252,
      'Twobminusa' = 8673637146589588538368589908373462798874929690826669771891051682960324374579289431940944506593401831180675927640810665787814058157125232229059235218281645431783064280629491569650725960078242863057952720028939990089024379895090539819777933684941022902207563526112894785617862251238365161198717106458219978536414466189285539332995765501129362169276175704890758138083507286277651847383857608988791179038580399414299478740395396330046213577626410102867121422204310059566970650371242226032159193834974183390981056053191784466296360838601553529211439427354854958775453171303532960986983974646831128646591215076588360782975133911292772846054548132095443926108506365685706581019626528726537480711406504349416587347774482073700774346991462484915485821422212130153659288165621672622387749797502013860342414219241457323994743119301421119476902895162578536845735589750721567221575635708594762429967321501370922383411988593808707433511072003769288972478964529424776051329378725374896920539313746733853008293418784938096912910101395864289472119273964080078127,
      'C' = 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875,
      'Aa' = 15046396270139755882169381996478643392095244129742374029186132341547416857815607133202101516448837411353116003855043295078996875803673442923061702564572381592763624773250459720914596992613606599730698557487141894217336900600012163140926842404205969726472362666876671946242214813644556700980392273410515315239843045578860276718163594795584188751720608171099363284530538428430730157480343678366415652134584685514691706367580172114743778012347319196099433458994859151573685357179409308692753729015289730619767510103626409453381739200137784283785813944200010419757892515078712164144197142700683928033570661441613386363162745503015489793942383283383363962809328033915945873952727612445663479652881951379491456711317924788821470905734227913891523870224371881553668677731685120947775348125413596847102690667739112893178313975071396520794039247940920499472704831901882056503128275955343409085967480583865032234487527175706621633900265088723823110233039071098905339443099242633317977459956333361492877591518732746585830164718399179069950772505563761937980678232294232572394795549722497092290387654992098784302106918617878240702514797840779877356778624236599068444148184181351289031583341508525466673516622879983850866147657219988040216984836293252195547237515121391478744081848677813172813831162450447761846672950126140155550027015342975471941722508181840532726926862984552114763868700395635823647337616539575661229021890938389495940456723591870644034070529187432714513149380516096192909114192998061705624122714163318035287478357623084385268085665106139174989324902129154463358227825819015243923005143231020032435583961180173244916797437477151588662599251903304775646819424972660109448056698207824280705177697959061379116674762216986255520001575708167749841393782620305889113160319122166993917966362625866102181303247334509920079831257282898272931227950223734346853326223965084003858735897451541987614084387592840733501186187361111761916087702434233169478735211814331363296753422776223672672628703333965654191927489819733744071750337639249382914867168306624803777014767197742906731056076672484765625,
      'Bb' = 39391976843425525456564878997271736743293940424953592997061583499661166007806741883880950031490123129820706672122983022305362708947442798516113000078386788332822709344655603327175196538862501866528374201880757256460623187706585803501038982533515830654968796174165809051742481673730780479047771489907266612701258323683890702791637118801133835062990061741544851490723940159243838806327659283898717459225345077211987735032521403685299732765118616609263069002713058907652729321826281443629142139127078118974113246319857344932960900435832949472474285018262658326354149224740692710918246567167970387593276524754006759763479487208799550573076441921931481913007865499613881963847624290083576038183807516282426497173394516239642464543750386536887238659296590006043604211489083416448700521417745575587434502943524631033158999030824770727257698738365447615530383564847705046116396355397104090419236717721322136087135756684088005612019506365904395289462750152700006859988676227071898153621140226589145419669735115495422066944336354849368198839424901299928189444750994731780338955243063572352471465870152322293625939061286683057426909011315275155675560295372563168254611738601571902865104676210050088847478030440144595636223496495153709073928268603951260030269681524033754117940170828278310771392720260568946586378219815975619601228494908680459946441540162289024311898614536559462631911415472761248955227998285380799309678389392922365544943081805160911693459164212153365337232200930180240949714336537741719226722712283153646243523175557395182168311150547186977520246225351257464837794323030133040466119035289154474869954967537684678592620305906179918235640102518684029782513015398534757767486878340741218429341573139858423548509802710841571692956073532067757754164423027263476281712998536833212455160208017643607301346462704223597397882146036129832644439981565735677265476870638950359094736100009850287177465342763571899573044636690888234185462082233107288848117748573969757468875823221912578979718390629084079854517616545570419559073331603008378553421293485218421016419638882174976629620770038700831876,
      'D' = 54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501],
     [10000 > 0,
      5000 is 10000 // 2,
      fib_pair(5000, 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125, 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626),
      12552605600977914172070506216699368110957057405472914878051648897855874513623326528951767423055612500659969380499693639601297160166080215169420665375193124370147280844573598479865231594211949421714190974685640702614954283750024353748614312032459931665178275559449947708725555259756459011000520954272216727418180020843073830977264678481513975948245197207183840613749853511200723730708660889363830309391483703920142179888030638600257148215325514109581296305502732951058243754425570979330203467511797160635968805927747476374000241475648386324022798401094848068881672479452551531802381829026026434264101976129664049566741167578648218104899434373714654479566000041583555609007860879750137325375341357605828539569634045134176138992462222815817906627804797059310112164457197431764731558939804931351431398374451311756481337199094992436318595763202123846391124287865386649288438533129234085868455786742359664779285790570802527750685280936034757851842967160222556110088508396764531134791892863606608608653730155485851637514741383452336457297682638462941252 is 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626 * 2,
      8673637146589588538368589908373462798874929690826669771891051682960324374579289431940944506593401831180675927640810665787814058157125232229059235218281645431783064280629491569650725960078242863057952720028939990089024379895090539819777933684941022902207563526112894785617862251238365161198717106458219978536414466189285539332995765501129362169276175704890758138083507286277651847383857608988791179038580399414299478740395396330046213577626410102867121422204310059566970650371242226032159193834974183390981056053191784466296360838601553529211439427354854958775453171303532960986983974646831128646591215076588360782975133911292772846054548132095443926108506365685706581019626528726537480711406504349416587347774482073700774346991462484915485821422212130153659288165621672622387749797502013860342414219241457323994743119301421119476902895162578536845735589750721567221575635708594762429967321501370922383411988593808707433511072003769288972478964529424776051329378725374896920539313746733853008293418784938096912910101395864289472119273964080078127 is 12552605600977914172070506216699368110957057405472914878051648897855874513623326528951767423055612500659969380499693639601297160166080215169420665375193124370147280844573598479865231594211949421714190974685640702614954283750024353748614312032459931665178275559449947708725555259756459011000520954272216727418180020843073830977264678481513975948245197207183840613749853511200723730708660889363830309391483703920142179888030638600257148215325514109581296305502732951058243754425570979330203467511797160635968805927747476374000241475648386324022798401094848068881672479452551531802381829026026434264101976129664049566741167578648218104899434373714654479566000041583555609007860879750137325375341357605828539569634045134176138992462222815817906627804797059310112164457197431764731558939804931351431398374451311756481337199094992436318595763202123846391124287865386649288438533129234085868455786742359664779285790570802527750685280936034757851842967160222556110088508396764531134791892863606608608653730155485851637514741383452336457297682638462941252 - 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125,
      33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875 is 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125 * 8673637146589588538368589908373462798874929690826669771891051682960324374579289431940944506593401831180675927640810665787814058157125232229059235218281645431783064280629491569650725960078242863057952720028939990089024379895090539819777933684941022902207563526112894785617862251238365161198717106458219978536414466189285539332995765501129362169276175704890758138083507286277651847383857608988791179038580399414299478740395396330046213577626410102867121422204310059566970650371242226032159193834974183390981056053191784466296360838601553529211439427354854958775453171303532960986983974646831128646591215076588360782975133911292772846054548132095443926108506365685706581019626528726537480711406504349416587347774482073700774346991462484915485821422212130153659288165621672622387749797502013860342414219241457323994743119301421119476902895162578536845735589750721567221575635708594762429967321501370922383411988593808707433511072003769288972478964529424776051329378725374896920539313746733853008293418784938096912910101395864289472119273964080078127,
      15046396270139755882169381996478643392095244129742374029186132341547416857815607133202101516448837411353116003855043295078996875803673442923061702564572381592763624773250459720914596992613606599730698557487141894217336900600012163140926842404205969726472362666876671946242214813644556700980392273410515315239843045578860276718163594795584188751720608171099363284530538428430730157480343678366415652134584685514691706367580172114743778012347319196099433458994859151573685357179409308692753729015289730619767510103626409453381739200137784283785813944200010419757892515078712164144197142700683928033570661441613386363162745503015489793942383283383363962809328033915945873952727612445663479652881951379491456711317924788821470905734227913891523870224371881553668677731685120947775348125413596847102690667739112893178313975071396520794039247940920499472704831901882056503128275955343409085967480583865032234487527175706621633900265088723823110233039071098905339443099242633317977459956333361492877591518732746585830164718399179069950772505563761937980678232294232572394795549722497092290387654992098784302106918617878240702514797840779877356778624236599068444148184181351289031583341508525466673516622879983850866147657219988040216984836293252195547237515121391478744081848677813172813831162450447761846672950126140155550027015342975471941722508181840532726926862984552114763868700395635823647337616539575661229021890938389495940456723591870644034070529187432714513149380516096192909114192998061705624122714163318035287478357623084385268085665106139174989324902129154463358227825819015243923005143231020032435583961180173244916797437477151588662599251903304775646819424972660109448056698207824280705177697959061379116674762216986255520001575708167749841393782620305889113160319122166993917966362625866102181303247334509920079831257282898272931227950223734346853326223965084003858735897451541987614084387592840733501186187361111761916087702434233169478735211814331363296753422776223672672628703333965654191927489819733744071750337639249382914867168306624803777014767197742906731056076672484765625 is 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125 * 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125,
      39391976843425525456564878997271736743293940424953592997061583499661166007806741883880950031490123129820706672122983022305362708947442798516113000078386788332822709344655603327175196538862501866528374201880757256460623187706585803501038982533515830654968796174165809051742481673730780479047771489907266612701258323683890702791637118801133835062990061741544851490723940159243838806327659283898717459225345077211987735032521403685299732765118616609263069002713058907652729321826281443629142139127078118974113246319857344932960900435832949472474285018262658326354149224740692710918246567167970387593276524754006759763479487208799550573076441921931481913007865499613881963847624290083576038183807516282426497173394516239642464543750386536887238659296590006043604211489083416448700521417745575587434502943524631033158999030824770727257698738365447615530383564847705046116396355397104090419236717721322136087135756684088005612019506365904395289462750152700006859988676227071898153621140226589145419669735115495422066944336354849368198839424901299928189444750994731780338955243063572352471465870152322293625939061286683057426909011315275155675560295372563168254611738601571902865104676210050088847478030440144595636223496495153709073928268603951260030269681524033754117940170828278310771392720260568946586378219815975619601228494908680459946441540162289024311898614536559462631911415472761248955227998285380799309678389392922365544943081805160911693459164212153365337232200930180240949714336537741719226722712283153646243523175557395182168311150547186977520246225351257464837794323030133040466119035289154474869954967537684678592620305906179918235640102518684029782513015398534757767486878340741218429341573139858423548509802710841571692956073532067757754164423027263476281712998536833212455160208017643607301346462704223597397882146036129832644439981565735677265476870638950359094736100009850287177465342763571899573044636690888234185462082233107288848117748573969757468875823221912578979718390629084079854517616545570419559073331603008378553421293485218421016419638882174976629620770038700831876 is 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626 * 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626,
      54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501 is 15046396270139755882169381996478643392095244129742374029186132341547416857815607133202101516448837411353116003855043295078996875803673442923061702564572381592763624773250459720914596992613606599730698557487141894217336900600012163140926842404205969726472362666876671946242214813644556700980392273410515315239843045578860276718163594795584188751720608171099363284530538428430730157480343678366415652134584685514691706367580172114743778012347319196099433458994859151573685357179409308692753729015289730619767510103626409453381739200137784283785813944200010419757892515078712164144197142700683928033570661441613386363162745503015489793942383283383363962809328033915945873952727612445663479652881951379491456711317924788821470905734227913891523870224371881553668677731685120947775348125413596847102690667739112893178313975071396520794039247940920499472704831901882056503128275955343409085967480583865032234487527175706621633900265088723823110233039071098905339443099242633317977459956333361492877591518732746585830164718399179069950772505563761937980678232294232572394795549722497092290387654992098784302106918617878240702514797840779877356778624236599068444148184181351289031583341508525466673516622879983850866147657219988040216984836293252195547237515121391478744081848677813172813831162450447761846672950126140155550027015342975471941722508181840532726926862984552114763868700395635823647337616539575661229021890938389495940456723591870644034070529187432714513149380516096192909114192998061705624122714163318035287478357623084385268085665106139174989324902129154463358227825819015243923005143231020032435583961180173244916797437477151588662599251903304775646819424972660109448056698207824280705177697959061379116674762216986255520001575708167749841393782620305889113160319122166993917966362625866102181303247334509920079831257282898272931227950223734346853326223965084003858735897451541987614084387592840733501186187361111761916087702434233169478735211814331363296753422776223672672628703333965654191927489819733744071750337639249382914867168306624803777014767197742906731056076672484765625 + 39391976843425525456564878997271736743293940424953592997061583499661166007806741883880950031490123129820706672122983022305362708947442798516113000078386788332822709344655603327175196538862501866528374201880757256460623187706585803501038982533515830654968796174165809051742481673730780479047771489907266612701258323683890702791637118801133835062990061741544851490723940159243838806327659283898717459225345077211987735032521403685299732765118616609263069002713058907652729321826281443629142139127078118974113246319857344932960900435832949472474285018262658326354149224740692710918246567167970387593276524754006759763479487208799550573076441921931481913007865499613881963847624290083576038183807516282426497173394516239642464543750386536887238659296590006043604211489083416448700521417745575587434502943524631033158999030824770727257698738365447615530383564847705046116396355397104090419236717721322136087135756684088005612019506365904395289462750152700006859988676227071898153621140226589145419669735115495422066944336354849368198839424901299928189444750994731780338955243063572352471465870152322293625939061286683057426909011315275155675560295372563168254611738601571902865104676210050088847478030440144595636223496495153709073928268603951260030269681524033754117940170828278310771392720260568946586378219815975619601228494908680459946441540162289024311898614536559462631911415472761248955227998285380799309678389392922365544943081805160911693459164212153365337232200930180240949714336537741719226722712283153646243523175557395182168311150547186977520246225351257464837794323030133040466119035289154474869954967537684678592620305906179918235640102518684029782513015398534757767486878340741218429341573139858423548509802710841571692956073532067757754164423027263476281712998536833212455160208017643607301346462704223597397882146036129832644439981565735677265476870638950359094736100009850287177465342763571899573044636690888234185462082233107288848117748573969757468875823221912578979718390629084079854517616545570419559073331603008378553421293485218421016419638882174976629620770038700831876,
      0 is 10000 mod 2,
      33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875 = 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875,
      54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501 = 54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501]).
step(10000 > 0, builtin, [], []).
step(5000 is 10000 // 2, builtin, [], []).
step(fib_pair(5000, 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125, 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626),
     rule(10),
     ['N' = 5000,
      'F' = 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125,
      'G' = 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626,
      'Half' = 2500,
      'A' = 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875,
      'B' = 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501,
      'Twob' = 4262194444729634517926485990340959486363641072740253750725736511670615519253181726250974600040252429937972709786753621117987504076633571946104687494193874936116096928565898947850841697814005379988015910491521226458543976277829269034304500379456677917315640783751892193247454766041736179950961236555374854638653053311126702192740977144980447726133116665538388942228811418338500600183038887026710148805657977824235443014878521448839329669987846515566900874602159663829600487535315201617568703068066124822472813216843409205002,
      'Twobminusa' = 2945103927977684888403722903215643074297034107747746608837989574943084648848143300486471469917066022191401847600881695165220667724514452417948371911561414145732262322911018335193123232181436540742037662018463047036473240724704552648853613738904285643458870111512095028983097838380427830279019562912169121295060351594410913937570297569480168540079800299955129755301452067315113301811352664165882733434214424064281783500757638685031187076621444043315552514593244078614308982550943504093697503514130410765513178438142814453127,
      'C' = 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125,
      'Aa' = 1734727429317917707673717981674692559774985938165333954378210336592064874915857886388188901318680366236135185528162133157562811631425046445811847043656329086356612856125898313930145192015648572611590544005787998017804875979018107963955586736988204580441512705222578957123572450247673032239743421291643995707282893237857107866599153100225872433855235140978151627616701457255530369476771521797758235807716079882859895748079079266009242715525282020573424284440862011913394130074248445206431838766994836678196211210638356893259272167720310705842287885470970991755090634260706592197396794929366225729318243015317672156595026782258554569210909626419088785221701273137141316203925305745307496142281300869883317469554896414740154869398292496983097164284442426030731857633124334524477549959500402772068482843848291464798948623860284223895380579032515707369147117950144313444315127141718952485993464300274184476682397718761741486702214400753857794495792905884955210265875745074979384107862749346770601658683756987619382582020279172857894423854792816015625,
      'Bb' = 4541575371171039378361535126674991495703542764571123484647614112335872381895805378087694810209125884093849504721684686643085768451615061138898485643940233098717027566160900926002470605090326138245504943337032353289672265895994068910351569279241761252147625074502394897239205179630556473260517055844464368001807117183679807622033186140531115540267363462613768679258225298344831495877558922884156918888025772077211194195936240034119331392137475034217223868310504463615727747138537044458669894988903743639788191753235381293740848570103882456169111315076453042685745605465569173703794119583646991402732745049514352626775557007065554483238807560438238454561298747654636488300005134129761166545389377933030952315262126152347914626832818910925856149617956103624324224595474381357888229510402062903647216343377364413441719975687211994263917302568546215826415025982549011199904139422898090448234429070905647912960497566639522388640426067263521131425690674226322844778378453307286183288083682456533702668181320755306436175350412553310334224986526415455001,
      'D' = 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626],
     [5000 > 0,
      2500 is 5000 // 2,
      fib_pair(2500, 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875, 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501),
      4262194444729634517926485990340959486363641072740253750725736511670615519253181726250974600040252429937972709786753621117987504076633571946104687494193874936116096928565898947850841697814005379988015910491521226458543976277829269034304500379456677917315640783751892193247454766041736179950961236555374854638653053311126702192740977144980447726133116665538388942228811418338500600183038887026710148805657977824235443014878521448839329669987846515566900874602159663829600487535315201617568703068066124822472813216843409205002 is 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501 * 2,
      2945103927977684888403722903215643074297034107747746608837989574943084648848143300486471469917066022191401847600881695165220667724514452417948371911561414145732262322911018335193123232181436540742037662018463047036473240724704552648853613738904285643458870111512095028983097838380427830279019562912169121295060351594410913937570297569480168540079800299955129755301452067315113301811352664165882733434214424064281783500757638685031187076621444043315552514593244078614308982550943504093697503514130410765513178438142814453127 is 4262194444729634517926485990340959486363641072740253750725736511670615519253181726250974600040252429937972709786753621117987504076633571946104687494193874936116096928565898947850841697814005379988015910491521226458543976277829269034304500379456677917315640783751892193247454766041736179950961236555374854638653053311126702192740977144980447726133116665538388942228811418338500600183038887026710148805657977824235443014878521448839329669987846515566900874602159663829600487535315201617568703068066124822472813216843409205002 - 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875,
      3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125 is 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875 * 2945103927977684888403722903215643074297034107747746608837989574943084648848143300486471469917066022191401847600881695165220667724514452417948371911561414145732262322911018335193123232181436540742037662018463047036473240724704552648853613738904285643458870111512095028983097838380427830279019562912169121295060351594410913937570297569480168540079800299955129755301452067315113301811352664165882733434214424064281783500757638685031187076621444043315552514593244078614308982550943504093697503514130410765513178438142814453127,
      1734727429317917707673717981674692559774985938165333954378210336592064874915857886388188901318680366236135185528162133157562811631425046445811847043656329086356612856125898313930145192015648572611590544005787998017804875979018107963955586736988204580441512705222578957123572450247673032239743421291643995707282893237857107866599153100225872433855235140978151627616701457255530369476771521797758235807716079882859895748079079266009242715525282020573424284440862011913394130074248445206431838766994836678196211210638356893259272167720310705842287885470970991755090634260706592197396794929366225729318243015317672156595026782258554569210909626419088785221701273137141316203925305745307496142281300869883317469554896414740154869398292496983097164284442426030731857633124334524477549959500402772068482843848291464798948623860284223895380579032515707369147117950144313444315127141718952485993464300274184476682397718761741486702214400753857794495792905884955210265875745074979384107862749346770601658683756987619382582020279172857894423854792816015625 is 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875 * 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875,
      4541575371171039378361535126674991495703542764571123484647614112335872381895805378087694810209125884093849504721684686643085768451615061138898485643940233098717027566160900926002470605090326138245504943337032353289672265895994068910351569279241761252147625074502394897239205179630556473260517055844464368001807117183679807622033186140531115540267363462613768679258225298344831495877558922884156918888025772077211194195936240034119331392137475034217223868310504463615727747138537044458669894988903743639788191753235381293740848570103882456169111315076453042685745605465569173703794119583646991402732745049514352626775557007065554483238807560438238454561298747654636488300005134129761166545389377933030952315262126152347914626832818910925856149617956103624324224595474381357888229510402062903647216343377364413441719975687211994263917302568546215826415025982549011199904139422898090448234429070905647912960497566639522388640426067263521131425690674226322844778378453307286183288083682456533702668181320755306436175350412553310334224986526415455001 is 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501 * 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501,
      6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626 is 1734727429317917707673717981674692559774985938165333954378210336592064874915857886388188901318680366236135185528162133157562811631425046445811847043656329086356612856125898313930145192015648572611590544005787998017804875979018107963955586736988204580441512705222578957123572450247673032239743421291643995707282893237857107866599153100225872433855235140978151627616701457255530369476771521797758235807716079882859895748079079266009242715525282020573424284440862011913394130074248445206431838766994836678196211210638356893259272167720310705842287885470970991755090634260706592197396794929366225729318243015317672156595026782258554569210909626419088785221701273137141316203925305745307496142281300869883317469554896414740154869398292496983097164284442426030731857633124334524477549959500402772068482843848291464798948623860284223895380579032515707369147117950144313444315127141718952485993464300274184476682397718761741486702214400753857794495792905884955210265875745074979384107862749346770601658683756987619382582020279172857894423854792816015625 + 4541575371171039378361535126674991495703542764571123484647614112335872381895805378087694810209125884093849504721684686643085768451615061138898485643940233098717027566160900926002470605090326138245504943337032353289672265895994068910351569279241761252147625074502394897239205179630556473260517055844464368001807117183679807622033186140531115540267363462613768679258225298344831495877558922884156918888025772077211194195936240034119331392137475034217223868310504463615727747138537044458669894988903743639788191753235381293740848570103882456169111315076453042685745605465569173703794119583646991402732745049514352626775557007065554483238807560438238454561298747654636488300005134129761166545389377933030952315262126152347914626832818910925856149617956103624324224595474381357888229510402062903647216343377364413441719975687211994263917302568546215826415025982549011199904139422898090448234429070905647912960497566639522388640426067263521131425690674226322844778378453307286183288083682456533702668181320755306436175350412553310334224986526415455001,
      0 is 5000 mod 2,
      3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125 = 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125,
      6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626 = 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626]).
step(5000 > 0, builtin, [], []).
step(2500 is 5000 // 2, builtin, [], []).
step(fib_pair(2500, 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875, 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501),
     rule(10),
     ['N' = 2500,
      'F' = 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875,
      'G' = 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501,
      'Half' = 1250,
      'A' = 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625,
      'B' = 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874,
      'Twob' = 2483607405987734029395514534891537203719253863213903649934702014379383292866452901948750901079275461881124822798858649050842666371225312513936471457153848680708581805202250841247004376887968367496033916147028076837147936117609492776528829077332203304656174303748,
      'Twobminusa' = 1716130510182044659403725257818015466479791389712966656142287423616412122452398929526912112526312510790712501230753690799536707698687996597839791441362274326576914168012647601375409085744513819426120408898489760958673117736300340966056452802304864265929689453123,
      'C' = 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875,
      'Aa' = 589020785595536977680744580643128614859406821549549321767597914988616929769628660097294293983413204438280369520176339033044133544902890483589674382312282829146452464582203667038624646436287308148407532403692609407294648144940910529770722747780857128691774022302419005796619567676085566055803912582433824259012070318882182787514059513896033708015960059991025951060290413463022660362270532833176546686842884812856356700151527737006237415324288808663110502918648815722861796510188700818739500702826082153102635687628562890625,
      'Bb' = 1542076436769280281282498414527351128322413714820577553595270340846690829856962203028193006036713010530705985373200471525949618493413895489462669364784654638911595999700745806886796202470715381845600422842068003821977339993973723987381527441947481829966046369573527090827107815344782523919676705695253603060314456336681168308856429058594190155050598272778168520054115295706227639729248910680178527715986104099261364807287732987413427419669634449120339934382431016191938447257468899990044850831206980258133770920793141711876,
      'D' = 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501],
     [2500 > 0,
      1250 is 2500 // 2,
      fib_pair(1250, 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625, 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874),
      2483607405987734029395514534891537203719253863213903649934702014379383292866452901948750901079275461881124822798858649050842666371225312513936471457153848680708581805202250841247004376887968367496033916147028076837147936117609492776528829077332203304656174303748 is 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874 * 2,
      1716130510182044659403725257818015466479791389712966656142287423616412122452398929526912112526312510790712501230753690799536707698687996597839791441362274326576914168012647601375409085744513819426120408898489760958673117736300340966056452802304864265929689453123 is 2483607405987734029395514534891537203719253863213903649934702014379383292866452901948750901079275461881124822798858649050842666371225312513936471457153848680708581805202250841247004376887968367496033916147028076837147936117609492776528829077332203304656174303748 - 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625,
      1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875 is 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625 * 1716130510182044659403725257818015466479791389712966656142287423616412122452398929526912112526312510790712501230753690799536707698687996597839791441362274326576914168012647601375409085744513819426120408898489760958673117736300340966056452802304864265929689453123,
      589020785595536977680744580643128614859406821549549321767597914988616929769628660097294293983413204438280369520176339033044133544902890483589674382312282829146452464582203667038624646436287308148407532403692609407294648144940910529770722747780857128691774022302419005796619567676085566055803912582433824259012070318882182787514059513896033708015960059991025951060290413463022660362270532833176546686842884812856356700151527737006237415324288808663110502918648815722861796510188700818739500702826082153102635687628562890625 is 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625 * 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625,
      1542076436769280281282498414527351128322413714820577553595270340846690829856962203028193006036713010530705985373200471525949618493413895489462669364784654638911595999700745806886796202470715381845600422842068003821977339993973723987381527441947481829966046369573527090827107815344782523919676705695253603060314456336681168308856429058594190155050598272778168520054115295706227639729248910680178527715986104099261364807287732987413427419669634449120339934382431016191938447257468899990044850831206980258133770920793141711876 is 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874 * 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874,
      2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501 is 589020785595536977680744580643128614859406821549549321767597914988616929769628660097294293983413204438280369520176339033044133544902890483589674382312282829146452464582203667038624646436287308148407532403692609407294648144940910529770722747780857128691774022302419005796619567676085566055803912582433824259012070318882182787514059513896033708015960059991025951060290413463022660362270532833176546686842884812856356700151527737006237415324288808663110502918648815722861796510188700818739500702826082153102635687628562890625 + 1542076436769280281282498414527351128322413714820577553595270340846690829856962203028193006036713010530705985373200471525949618493413895489462669364784654638911595999700745806886796202470715381845600422842068003821977339993973723987381527441947481829966046369573527090827107815344782523919676705695253603060314456336681168308856429058594190155050598272778168520054115295706227639729248910680178527715986104099261364807287732987413427419669634449120339934382431016191938447257468899990044850831206980258133770920793141711876,
      0 is 2500 mod 2,
      1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875 = 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875,
      2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501 = 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501]).
step(2500 > 0, builtin, [], []).
step(1250 is 2500 // 2, builtin, [], []).
step(fib_pair(1250, 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625, 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874),
     rule(10),
     ['N' = 1250,
      'F' = 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625,
      'G' = 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874,
      'Half' = 625,
      'A' = 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
      'B' = 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193,
      'Twob' = 59952567950254076929560315092745975003204897469637286098703517515694868691801117882044962557759824736595773900971299317004065768386,
      'Twobminusa' = 41426205597206759619277357446339665409241444631440862438195414952717638786238921273966406265203029690673182412697744528122767017761,
      'C' = 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625,
      'Aa' = 343226102036408931880745051563603093295958277942593331228457484723282424490479785905382422505262502158142500246150738159907341539737599319567958288272454865315382833602529520275081817148902763885224081779697952191734623547260068193211290560460972853185937890625,
      'Bb' = 898577600957458082817012215882165508563668653664358493738893522466409221942746665068993028034375228782419911153278586365513991645875056937400277440304469475038908068998595900348420371295081419862792876293816086226839344511544678195053123978205128799142149261249,
      'D' = 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874],
     [1250 > 0,
      625 is 1250 // 2,
      fib_pair(625, 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625, 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193),
      59952567950254076929560315092745975003204897469637286098703517515694868691801117882044962557759824736595773900971299317004065768386 is 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193 * 2,
      41426205597206759619277357446339665409241444631440862438195414952717638786238921273966406265203029690673182412697744528122767017761 is 59952567950254076929560315092745975003204897469637286098703517515694868691801117882044962557759824736595773900971299317004065768386 - 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
      767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625 is 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625 * 41426205597206759619277357446339665409241444631440862438195414952717638786238921273966406265203029690673182412697744528122767017761,
      343226102036408931880745051563603093295958277942593331228457484723282424490479785905382422505262502158142500246150738159907341539737599319567958288272454865315382833602529520275081817148902763885224081779697952191734623547260068193211290560460972853185937890625 is 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625 * 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
      898577600957458082817012215882165508563668653664358493738893522466409221942746665068993028034375228782419911153278586365513991645875056937400277440304469475038908068998595900348420371295081419862792876293816086226839344511544678195053123978205128799142149261249 is 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193 * 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193,
      1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874 is 343226102036408931880745051563603093295958277942593331228457484723282424490479785905382422505262502158142500246150738159907341539737599319567958288272454865315382833602529520275081817148902763885224081779697952191734623547260068193211290560460972853185937890625 + 898577600957458082817012215882165508563668653664358493738893522466409221942746665068993028034375228782419911153278586365513991645875056937400277440304469475038908068998595900348420371295081419862792876293816086226839344511544678195053123978205128799142149261249,
      0 is 1250 mod 2,
      767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625 = 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625,
      1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874 = 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874]).
step(1250 > 0, builtin, [], []).
step(625 is 1250 // 2, builtin, [], []).
step(fib_pair(625, 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625, 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193),
     rule(11),
     ['N' = 625,
      'F' = 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
      'G' = 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193,
      'Half' = 312,
      'A' = 71558092601766452430641106302905217344934236440122960529002115744,
      'B' = 115783425999770513860373944643635095356961600163955231274253486033,
      'Twob' = 231566851999541027720747889287270190713923200327910462548506972066,
      'Twobminusa' = 160008759397774575290106782984364973368988963887787502019504856322,
      'C' = 11449921622079721154497199899966677907638995896622219388843656194870204440338362332943924986323117322375295462212094869620734133568,
      'Aa' = 5120560616802982693213743078569188256057581955954125586434509786216851074157206176642637519758094553893977502867002941628372673536,
      'Bb' = 13405801736244334617069214567837121337905870882242298074073592776760378831404990431435918772798700492028613985406551847252926077089,
      'D' = 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
      'Next' = 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193],
     [625 > 0,
      312 is 625 // 2,
      fib_pair(312, 71558092601766452430641106302905217344934236440122960529002115744, 115783425999770513860373944643635095356961600163955231274253486033),
      231566851999541027720747889287270190713923200327910462548506972066 is 115783425999770513860373944643635095356961600163955231274253486033 * 2,
      160008759397774575290106782984364973368988963887787502019504856322 is 231566851999541027720747889287270190713923200327910462548506972066 - 71558092601766452430641106302905217344934236440122960529002115744,
      11449921622079721154497199899966677907638995896622219388843656194870204440338362332943924986323117322375295462212094869620734133568 is 71558092601766452430641106302905217344934236440122960529002115744 * 160008759397774575290106782984364973368988963887787502019504856322,
      5120560616802982693213743078569188256057581955954125586434509786216851074157206176642637519758094553893977502867002941628372673536 is 71558092601766452430641106302905217344934236440122960529002115744 * 71558092601766452430641106302905217344934236440122960529002115744,
      13405801736244334617069214567837121337905870882242298074073592776760378831404990431435918772798700492028613985406551847252926077089 is 115783425999770513860373944643635095356961600163955231274253486033 * 115783425999770513860373944643635095356961600163955231274253486033,
      18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625 is 5120560616802982693213743078569188256057581955954125586434509786216851074157206176642637519758094553893977502867002941628372673536 + 13405801736244334617069214567837121337905870882242298074073592776760378831404990431435918772798700492028613985406551847252926077089,
      1 is 625 mod 2,
      29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193 is 11449921622079721154497199899966677907638995896622219388843656194870204440338362332943924986323117322375295462212094869620734133568 + 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
      18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625 = 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
      29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193 = 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193]).
step(625 > 0, builtin, [], []).
step(312 is 625 // 2, builtin, [], []).
step(fib_pair(312, 71558092601766452430641106302905217344934236440122960529002115744, 115783425999770513860373944643635095356961600163955231274253486033),
     rule(10),
     ['N' = 312,
      'F' = 71558092601766452430641106302905217344934236440122960529002115744,
      'G' = 115783425999770513860373944643635095356961600163955231274253486033,
      'Half' = 156,
      'A' = 178890334785183168257455287891792,
      'B' = 289450641941273985495088042104137,
      'Twob' = 578901283882547970990176084208274,
      'Twobminusa' = 400010949097364802732720796316482,
      'C' = 71558092601766452430641106302905217344934236440122960529002115744,
      'Aa' = 32001751879554915058021356596872994673797792777557500403900971264,
      'Bb' = 83781674120215598802352588046762100683163807386397730870352514769,
      'D' = 115783425999770513860373944643635095356961600163955231274253486033],
     [312 > 0,
      156 is 312 // 2,
      fib_pair(156, 178890334785183168257455287891792, 289450641941273985495088042104137),
      578901283882547970990176084208274 is 289450641941273985495088042104137 * 2,
      400010949097364802732720796316482 is 578901283882547970990176084208274 - 178890334785183168257455287891792,
      71558092601766452430641106302905217344934236440122960529002115744 is 178890334785183168257455287891792 * 400010949097364802732720796316482,
      32001751879554915058021356596872994673797792777557500403900971264 is 178890334785183168257455287891792 * 178890334785183168257455287891792,
      83781674120215598802352588046762100683163807386397730870352514769 is 289450641941273985495088042104137 * 289450641941273985495088042104137,
      115783425999770513860373944643635095356961600163955231274253486033 is 32001751879554915058021356596872994673797792777557500403900971264 + 83781674120215598802352588046762100683163807386397730870352514769,
      0 is 312 mod 2,
      71558092601766452430641106302905217344934236440122960529002115744 = 71558092601766452430641106302905217344934236440122960529002115744,
      115783425999770513860373944643635095356961600163955231274253486033 = 115783425999770513860373944643635095356961600163955231274253486033]).
step(312 > 0, builtin, [], []).
step(156 is 312 // 2, builtin, [], []).
step(fib_pair(156, 178890334785183168257455287891792, 289450641941273985495088042104137),
     rule(10),
     ['N' = 156,
      'F' = 178890334785183168257455287891792,
      'G' = 289450641941273985495088042104137,
      'Half' = 78,
      'A' = 8944394323791464,
      'B' = 14472334024676221,
      'Twob' = 28944668049352442,
      'Twobminusa' = 20000273725560978,
      'C' = 178890334785183168257455287891792,
      'Aa' = 80002189819472960546544159263296,
      'Bb' = 209448452121801024948543882840841,
      'D' = 289450641941273985495088042104137],
     [156 > 0,
      78 is 156 // 2,
      fib_pair(78, 8944394323791464, 14472334024676221),
      28944668049352442 is 14472334024676221 * 2,
      20000273725560978 is 28944668049352442 - 8944394323791464,
      178890334785183168257455287891792 is 8944394323791464 * 20000273725560978,
      80002189819472960546544159263296 is 8944394323791464 * 8944394323791464,
      209448452121801024948543882840841 is 14472334024676221 * 14472334024676221,
      289450641941273985495088042104137 is 80002189819472960546544159263296 + 209448452121801024948543882840841,
      0 is 156 mod 2,
      178890334785183168257455287891792 = 178890334785183168257455287891792,
      289450641941273985495088042104137 = 289450641941273985495088042104137]).
step(156 > 0, builtin, [], []).
step(78 is 156 // 2, builtin, [], []).
step(fib_pair(78, 8944394323791464, 14472334024676221),
     rule(10),
     ['N' = 78,
      'F' = 8944394323791464,
      'G' = 14472334024676221,
      'Half' = 39,
      'A' = 63245986,
      'B' = 102334155,
      'Twob' = 204668310,
      'Twobminusa' = 141422324,
      'C' = 8944394323791464,
      'Aa' = 4000054745112196,
      'Bb' = 10472279279564025,
      'D' = 14472334024676221],
     [78 > 0,
      39 is 78 // 2,
      fib_pair(39, 63245986, 102334155),
      204668310 is 102334155 * 2,
      141422324 is 204668310 - 63245986,
      8944394323791464 is 63245986 * 141422324,
      4000054745112196 is 63245986 * 63245986,
      10472279279564025 is 102334155 * 102334155,
      14472334024676221 is 4000054745112196 + 10472279279564025,
      0 is 78 mod 2,
      8944394323791464 = 8944394323791464,
      14472334024676221 = 14472334024676221]).
step(78 > 0, builtin, [], []).
step(39 is 78 // 2, builtin, [], []).
step(fib_pair(39, 63245986, 102334155),
     rule(11),
     ['N' = 39,
      'F' = 63245986,
      'G' = 102334155,
      'Half' = 19,
      'A' = 4181,
      'B' = 6765,
      'Twob' = 13530,
      'Twobminusa' = 9349,
      'C' = 39088169,
      'Aa' = 17480761,
      'Bb' = 45765225,
      'D' = 63245986,
      'Next' = 102334155],
     [39 > 0,
      19 is 39 // 2,
      fib_pair(19, 4181, 6765),
      13530 is 6765 * 2,
      9349 is 13530 - 4181,
      39088169 is 4181 * 9349,
      17480761 is 4181 * 4181,
      45765225 is 6765 * 6765,
      63245986 is 17480761 + 45765225,
      1 is 39 mod 2,
      102334155 is 39088169 + 63245986,
      63245986 = 63245986,
      102334155 = 102334155]).
step(39 > 0, builtin, [], []).
step(19 is 39 // 2, builtin, [], []).
step(fib_pair(19, 4181, 6765),
     rule(11),
     ['N' = 19,
      'F' = 4181,
      'G' = 6765,
      'Half' = 9,
      'A' = 34,
      'B' = 55,
      'Twob' = 110,
      'Twobminusa' = 76,
      'C' = 2584,
      'Aa' = 1156,
      'Bb' = 3025,
      'D' = 4181,
      'Next' = 6765],
     [19 > 0,
      9 is 19 // 2,
      fib_pair(9, 34, 55),
      110 is 55 * 2,
      76 is 110 - 34,
      2584 is 34 * 76,
      1156 is 34 * 34,
      3025 is 55 * 55,
      4181 is 1156 + 3025,
      1 is 19 mod 2,
      6765 is 2584 + 4181,
      4181 = 4181,
      6765 = 6765]).
step(19 > 0, builtin, [], []).
step(9 is 19 // 2, builtin, [], []).
step(fib_pair(9, 34, 55),
     rule(11),
     ['N' = 9,
      'F' = 34,
      'G' = 55,
      'Half' = 4,
      'A' = 3,
      'B' = 5,
      'Twob' = 10,
      'Twobminusa' = 7,
      'C' = 21,
      'Aa' = 9,
      'Bb' = 25,
      'D' = 34,
      'Next' = 55],
     [9 > 0,
      4 is 9 // 2,
      fib_pair(4, 3, 5),
      10 is 5 * 2,
      7 is 10 - 3,
      21 is 3 * 7,
      9 is 3 * 3,
      25 is 5 * 5,
      34 is 9 + 25,
      1 is 9 mod 2,
      55 is 21 + 34,
      34 = 34,
      55 = 55]).
step(9 > 0, builtin, [], []).
step(4 is 9 // 2, builtin, [], []).
step(fib_pair(4, 3, 5),
     rule(10),
     ['N' = 4,
      'F' = 3,
      'G' = 5,
      'Half' = 2,
      'A' = 1,
      'B' = 2,
      'Twob' = 4,
      'Twobminusa' = 3,
      'C' = 3,
      'Aa' = 1,
      'Bb' = 4,
      'D' = 5],
     [4 > 0,
      2 is 4 // 2,
      fib_pair(2, 1, 2),
      4 is 2 * 2,
      3 is 4 - 1,
      3 is 1 * 3,
      1 is 1 * 1,
      4 is 2 * 2,
      5 is 1 + 4,
      0 is 4 mod 2,
      3 = 3,
      5 = 5]).
step(4 > 0, builtin, [], []).
step(2 is 4 // 2, builtin, [], []).
step(0 is 4 mod 2, builtin, [], []).
step(10 is 5 * 2, builtin, [], []).
step(7 is 10 - 3, builtin, [], []).
step(21 is 3 * 7, builtin, [], []).
step(34 is 9 + 25, builtin, [], []).
step(1 is 9 mod 2, builtin, [], []).
step(55 is 21 + 34, builtin, [], []).
step(34 = 34, builtin, [], []).
step(110 is 55 * 2, builtin, [], []).
step(76 is 110 - 34, builtin, [], []).
step(2584 is 34 * 76, builtin, [], []).
step(1156 is 34 * 34, builtin, [], []).
step(3025 is 55 * 55, builtin, [], []).
step(4181 is 1156 + 3025, builtin, [], []).
step(1 is 19 mod 2, builtin, [], []).
step(6765 is 2584 + 4181, builtin, [], []).
step(4181 = 4181, builtin, [], []).
step(6765 = 6765, builtin, [], []).
step(13530 is 6765 * 2, builtin, [], []).
step(9349 is 13530 - 4181, builtin, [], []).
step(39088169 is 4181 * 9349, builtin, [], []).
step(17480761 is 4181 * 4181, builtin, [], []).
step(45765225 is 6765 * 6765, builtin, [], []).
step(63245986 is 17480761 + 45765225, builtin, [], []).
step(1 is 39 mod 2, builtin, [], []).
step(102334155 is 39088169 + 63245986, builtin, [], []).
step(63245986 = 63245986, builtin, [], []).
step(102334155 = 102334155, builtin, [], []).
step(204668310 is 102334155 * 2, builtin, [], []).
step(141422324 is 204668310 - 63245986, builtin, [], []).
step(8944394323791464 is 63245986 * 141422324, builtin, [], []).
step(4000054745112196 is 63245986 * 63245986, builtin, [], []).
step(10472279279564025 is 102334155 * 102334155, builtin, [], []).
step(14472334024676221 is 4000054745112196 + 10472279279564025, builtin, [], []).
step(0 is 78 mod 2, builtin, [], []).
step(8944394323791464 = 8944394323791464, builtin, [], []).
step(14472334024676221 = 14472334024676221, builtin, [], []).
step(28944668049352442 is 14472334024676221 * 2, builtin, [], []).
step(20000273725560978 is 28944668049352442 - 8944394323791464, builtin, [], []).
step(178890334785183168257455287891792 is 8944394323791464 * 20000273725560978, builtin, [], []).
step(80002189819472960546544159263296 is 8944394323791464 * 8944394323791464, builtin, [], []).
step(209448452121801024948543882840841 is 14472334024676221 * 14472334024676221,
     builtin,
     [],
     []).
step(289450641941273985495088042104137 is 80002189819472960546544159263296 + 209448452121801024948543882840841,
     builtin,
     [],
     []).
step(0 is 156 mod 2, builtin, [], []).
step(178890334785183168257455287891792 = 178890334785183168257455287891792, builtin, [], []).
step(289450641941273985495088042104137 = 289450641941273985495088042104137, builtin, [], []).
step(578901283882547970990176084208274 is 289450641941273985495088042104137 * 2,
     builtin,
     [],
     []).
step(400010949097364802732720796316482 is 578901283882547970990176084208274 - 178890334785183168257455287891792,
     builtin,
     [],
     []).
step(71558092601766452430641106302905217344934236440122960529002115744 is 178890334785183168257455287891792 * 400010949097364802732720796316482,
     builtin,
     [],
     []).
step(32001751879554915058021356596872994673797792777557500403900971264 is 178890334785183168257455287891792 * 178890334785183168257455287891792,
     builtin,
     [],
     []).
step(83781674120215598802352588046762100683163807386397730870352514769 is 289450641941273985495088042104137 * 289450641941273985495088042104137,
     builtin,
     [],
     []).
step(115783425999770513860373944643635095356961600163955231274253486033 is 32001751879554915058021356596872994673797792777557500403900971264 + 83781674120215598802352588046762100683163807386397730870352514769,
     builtin,
     [],
     []).
step(0 is 312 mod 2, builtin, [], []).
step(71558092601766452430641106302905217344934236440122960529002115744 = 71558092601766452430641106302905217344934236440122960529002115744,
     builtin,
     [],
     []).
step(115783425999770513860373944643635095356961600163955231274253486033 = 115783425999770513860373944643635095356961600163955231274253486033,
     builtin,
     [],
     []).
step(231566851999541027720747889287270190713923200327910462548506972066 is 115783425999770513860373944643635095356961600163955231274253486033 * 2,
     builtin,
     [],
     []).
step(160008759397774575290106782984364973368988963887787502019504856322 is 231566851999541027720747889287270190713923200327910462548506972066 - 71558092601766452430641106302905217344934236440122960529002115744,
     builtin,
     [],
     []).
step(11449921622079721154497199899966677907638995896622219388843656194870204440338362332943924986323117322375295462212094869620734133568 is 71558092601766452430641106302905217344934236440122960529002115744 * 160008759397774575290106782984364973368988963887787502019504856322,
     builtin,
     [],
     []).
step(5120560616802982693213743078569188256057581955954125586434509786216851074157206176642637519758094553893977502867002941628372673536 is 71558092601766452430641106302905217344934236440122960529002115744 * 71558092601766452430641106302905217344934236440122960529002115744,
     builtin,
     [],
     []).
step(13405801736244334617069214567837121337905870882242298074073592776760378831404990431435918772798700492028613985406551847252926077089 is 115783425999770513860373944643635095356961600163955231274253486033 * 115783425999770513860373944643635095356961600163955231274253486033,
     builtin,
     [],
     []).
step(18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625 is 5120560616802982693213743078569188256057581955954125586434509786216851074157206176642637519758094553893977502867002941628372673536 + 13405801736244334617069214567837121337905870882242298074073592776760378831404990431435918772798700492028613985406551847252926077089,
     builtin,
     [],
     []).
step(1 is 625 mod 2, builtin, [], []).
step(29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193 is 11449921622079721154497199899966677907638995896622219388843656194870204440338362332943924986323117322375295462212094869620734133568 + 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
     builtin,
     [],
     []).
step(18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625 = 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
     builtin,
     [],
     []).
step(29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193 = 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193,
     builtin,
     [],
     []).
step(59952567950254076929560315092745975003204897469637286098703517515694868691801117882044962557759824736595773900971299317004065768386 is 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193 * 2,
     builtin,
     [],
     []).
step(41426205597206759619277357446339665409241444631440862438195414952717638786238921273966406265203029690673182412697744528122767017761 is 59952567950254076929560315092745975003204897469637286098703517515694868691801117882044962557759824736595773900971299317004065768386 - 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
     builtin,
     [],
     []).
step(767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625 is 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625 * 41426205597206759619277357446339665409241444631440862438195414952717638786238921273966406265203029690673182412697744528122767017761,
     builtin,
     [],
     []).
step(343226102036408931880745051563603093295958277942593331228457484723282424490479785905382422505262502158142500246150738159907341539737599319567958288272454865315382833602529520275081817148902763885224081779697952191734623547260068193211290560460972853185937890625 is 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625 * 18526362353047317310282957646406309593963452838196423660508102562977229905562196608078556292556795045922591488273554788881298750625,
     builtin,
     [],
     []).
step(898577600957458082817012215882165508563668653664358493738893522466409221942746665068993028034375228782419911153278586365513991645875056937400277440304469475038908068998595900348420371295081419862792876293816086226839344511544678195053123978205128799142149261249 is 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193 * 29976283975127038464780157546372987501602448734818643049351758757847434345900558941022481278879912368297886950485649658502032884193,
     builtin,
     [],
     []).
step(1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874 is 343226102036408931880745051563603093295958277942593331228457484723282424490479785905382422505262502158142500246150738159907341539737599319567958288272454865315382833602529520275081817148902763885224081779697952191734623547260068193211290560460972853185937890625 + 898577600957458082817012215882165508563668653664358493738893522466409221942746665068993028034375228782419911153278586365513991645875056937400277440304469475038908068998595900348420371295081419862792876293816086226839344511544678195053123978205128799142149261249,
     builtin,
     [],
     []).
step(0 is 1250 mod 2, builtin, [], []).
step(767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625 = 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625,
     builtin,
     [],
     []).
step(1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874 = 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874,
     builtin,
     [],
     []).
step(2483607405987734029395514534891537203719253863213903649934702014379383292866452901948750901079275461881124822798858649050842666371225312513936471457153848680708581805202250841247004376887968367496033916147028076837147936117609492776528829077332203304656174303748 is 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874 * 2,
     builtin,
     [],
     []).
step(1716130510182044659403725257818015466479791389712966656142287423616412122452398929526912112526312510790712501230753690799536707698687996597839791441362274326576914168012647601375409085744513819426120408898489760958673117736300340966056452802304864265929689453123 is 2483607405987734029395514534891537203719253863213903649934702014379383292866452901948750901079275461881124822798858649050842666371225312513936471457153848680708581805202250841247004376887968367496033916147028076837147936117609492776528829077332203304656174303748 - 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625,
     builtin,
     [],
     []).
step(1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875 is 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625 * 1716130510182044659403725257818015466479791389712966656142287423616412122452398929526912112526312510790712501230753690799536707698687996597839791441362274326576914168012647601375409085744513819426120408898489760958673117736300340966056452802304864265929689453123,
     builtin,
     [],
     []).
step(589020785595536977680744580643128614859406821549549321767597914988616929769628660097294293983413204438280369520176339033044133544902890483589674382312282829146452464582203667038624646436287308148407532403692609407294648144940910529770722747780857128691774022302419005796619567676085566055803912582433824259012070318882182787514059513896033708015960059991025951060290413463022660362270532833176546686842884812856356700151527737006237415324288808663110502918648815722861796510188700818739500702826082153102635687628562890625 is 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625 * 767476895805689369991789277073521737239462473500936993792414590762971170414053972421838788552962951090412321568104958251305958672537315916096680015791574354131667637189603239871595291143454548069913507248538315878474818381309151810472376275027339038726484850625,
     builtin,
     [],
     []).
step(1542076436769280281282498414527351128322413714820577553595270340846690829856962203028193006036713010530705985373200471525949618493413895489462669364784654638911595999700745806886796202470715381845600422842068003821977339993973723987381527441947481829966046369573527090827107815344782523919676705695253603060314456336681168308856429058594190155050598272778168520054115295706227639729248910680178527715986104099261364807287732987413427419669634449120339934382431016191938447257468899990044850831206980258133770920793141711876 is 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874 * 1241803702993867014697757267445768601859626931606951824967351007189691646433226450974375450539637730940562411399429324525421333185612656256968235728576924340354290902601125420623502188443984183748016958073514038418573968058804746388264414538666101652328087151874,
     builtin,
     [],
     []).
step(2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501 is 589020785595536977680744580643128614859406821549549321767597914988616929769628660097294293983413204438280369520176339033044133544902890483589674382312282829146452464582203667038624646436287308148407532403692609407294648144940910529770722747780857128691774022302419005796619567676085566055803912582433824259012070318882182787514059513896033708015960059991025951060290413463022660362270532833176546686842884812856356700151527737006237415324288808663110502918648815722861796510188700818739500702826082153102635687628562890625 + 1542076436769280281282498414527351128322413714820577553595270340846690829856962203028193006036713010530705985373200471525949618493413895489462669364784654638911595999700745806886796202470715381845600422842068003821977339993973723987381527441947481829966046369573527090827107815344782523919676705695253603060314456336681168308856429058594190155050598272778168520054115295706227639729248910680178527715986104099261364807287732987413427419669634449120339934382431016191938447257468899990044850831206980258133770920793141711876,
     builtin,
     [],
     []).
step(0 is 2500 mod 2, builtin, [], []).
step(1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875 = 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875,
     builtin,
     [],
     []).
step(2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501 = 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501,
     builtin,
     [],
     []).
step(4262194444729634517926485990340959486363641072740253750725736511670615519253181726250974600040252429937972709786753621117987504076633571946104687494193874936116096928565898947850841697814005379988015910491521226458543976277829269034304500379456677917315640783751892193247454766041736179950961236555374854638653053311126702192740977144980447726133116665538388942228811418338500600183038887026710148805657977824235443014878521448839329669987846515566900874602159663829600487535315201617568703068066124822472813216843409205002 is 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501 * 2,
     builtin,
     [],
     []).
step(2945103927977684888403722903215643074297034107747746608837989574943084648848143300486471469917066022191401847600881695165220667724514452417948371911561414145732262322911018335193123232181436540742037662018463047036473240724704552648853613738904285643458870111512095028983097838380427830279019562912169121295060351594410913937570297569480168540079800299955129755301452067315113301811352664165882733434214424064281783500757638685031187076621444043315552514593244078614308982550943504093697503514130410765513178438142814453127 is 4262194444729634517926485990340959486363641072740253750725736511670615519253181726250974600040252429937972709786753621117987504076633571946104687494193874936116096928565898947850841697814005379988015910491521226458543976277829269034304500379456677917315640783751892193247454766041736179950961236555374854638653053311126702192740977144980447726133116665538388942228811418338500600183038887026710148805657977824235443014878521448839329669987846515566900874602159663829600487535315201617568703068066124822472813216843409205002 - 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875,
     builtin,
     [],
     []).
step(3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125 is 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875 * 2945103927977684888403722903215643074297034107747746608837989574943084648848143300486471469917066022191401847600881695165220667724514452417948371911561414145732262322911018335193123232181436540742037662018463047036473240724704552648853613738904285643458870111512095028983097838380427830279019562912169121295060351594410913937570297569480168540079800299955129755301452067315113301811352664165882733434214424064281783500757638685031187076621444043315552514593244078614308982550943504093697503514130410765513178438142814453127,
     builtin,
     [],
     []).
step(1734727429317917707673717981674692559774985938165333954378210336592064874915857886388188901318680366236135185528162133157562811631425046445811847043656329086356612856125898313930145192015648572611590544005787998017804875979018107963955586736988204580441512705222578957123572450247673032239743421291643995707282893237857107866599153100225872433855235140978151627616701457255530369476771521797758235807716079882859895748079079266009242715525282020573424284440862011913394130074248445206431838766994836678196211210638356893259272167720310705842287885470970991755090634260706592197396794929366225729318243015317672156595026782258554569210909626419088785221701273137141316203925305745307496142281300869883317469554896414740154869398292496983097164284442426030731857633124334524477549959500402772068482843848291464798948623860284223895380579032515707369147117950144313444315127141718952485993464300274184476682397718761741486702214400753857794495792905884955210265875745074979384107862749346770601658683756987619382582020279172857894423854792816015625 is 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875 * 1317090516751949629522763087125316412066606964992507141887746936727530870405038425764503130123186407746570862185871925952766836352119119528156315582632460790383834605654880612657718465632568839245978248473058179422070735553124716385450886640552392273856770672239797164264356927661308349671941673643205733343592701716715788255170679575500279186053316365583259186927359351023387298371686222860827415371443553759953659514120882763808142593366402472251348360008915585215291504984371697523871199553935714056959634778700594751875,
     builtin,
     [],
     []).
step(4541575371171039378361535126674991495703542764571123484647614112335872381895805378087694810209125884093849504721684686643085768451615061138898485643940233098717027566160900926002470605090326138245504943337032353289672265895994068910351569279241761252147625074502394897239205179630556473260517055844464368001807117183679807622033186140531115540267363462613768679258225298344831495877558922884156918888025772077211194195936240034119331392137475034217223868310504463615727747138537044458669894988903743639788191753235381293740848570103882456169111315076453042685745605465569173703794119583646991402732745049514352626775557007065554483238807560438238454561298747654636488300005134129761166545389377933030952315262126152347914626832818910925856149617956103624324224595474381357888229510402062903647216343377364413441719975687211994263917302568546215826415025982549011199904139422898090448234429070905647912960497566639522388640426067263521131425690674226322844778378453307286183288083682456533702668181320755306436175350412553310334224986526415455001 is 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501 * 2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501,
     builtin,
     [],
     []).
step(6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626 is 1734727429317917707673717981674692559774985938165333954378210336592064874915857886388188901318680366236135185528162133157562811631425046445811847043656329086356612856125898313930145192015648572611590544005787998017804875979018107963955586736988204580441512705222578957123572450247673032239743421291643995707282893237857107866599153100225872433855235140978151627616701457255530369476771521797758235807716079882859895748079079266009242715525282020573424284440862011913394130074248445206431838766994836678196211210638356893259272167720310705842287885470970991755090634260706592197396794929366225729318243015317672156595026782258554569210909626419088785221701273137141316203925305745307496142281300869883317469554896414740154869398292496983097164284442426030731857633124334524477549959500402772068482843848291464798948623860284223895380579032515707369147117950144313444315127141718952485993464300274184476682397718761741486702214400753857794495792905884955210265875745074979384107862749346770601658683756987619382582020279172857894423854792816015625 + 4541575371171039378361535126674991495703542764571123484647614112335872381895805378087694810209125884093849504721684686643085768451615061138898485643940233098717027566160900926002470605090326138245504943337032353289672265895994068910351569279241761252147625074502394897239205179630556473260517055844464368001807117183679807622033186140531115540267363462613768679258225298344831495877558922884156918888025772077211194195936240034119331392137475034217223868310504463615727747138537044458669894988903743639788191753235381293740848570103882456169111315076453042685745605465569173703794119583646991402732745049514352626775557007065554483238807560438238454561298747654636488300005134129761166545389377933030952315262126152347914626832818910925856149617956103624324224595474381357888229510402062903647216343377364413441719975687211994263917302568546215826415025982549011199904139422898090448234429070905647912960497566639522388640426067263521131425690674226322844778378453307286183288083682456533702668181320755306436175350412553310334224986526415455001,
     builtin,
     [],
     []).
step(0 is 5000 mod 2, builtin, [], []).
step(3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125 = 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125,
     builtin,
     [],
     []).
step(6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626 = 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626,
     builtin,
     [],
     []).
step(12552605600977914172070506216699368110957057405472914878051648897855874513623326528951767423055612500659969380499693639601297160166080215169420665375193124370147280844573598479865231594211949421714190974685640702614954283750024353748614312032459931665178275559449947708725555259756459011000520954272216727418180020843073830977264678481513975948245197207183840613749853511200723730708660889363830309391483703920142179888030638600257148215325514109581296305502732951058243754425570979330203467511797160635968805927747476374000241475648386324022798401094848068881672479452551531802381829026026434264101976129664049566741167578648218104899434373714654479566000041583555609007860879750137325375341357605828539569634045134176138992462222815817906627804797059310112164457197431764731558939804931351431398374451311756481337199094992436318595763202123846391124287865386649288438533129234085868455786742359664779285790570802527750685280936034757851842967160222556110088508396764531134791892863606608608653730155485851637514741383452336457297682638462941252 is 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626 * 2,
     builtin,
     [],
     []).
step(8673637146589588538368589908373462798874929690826669771891051682960324374579289431940944506593401831180675927640810665787814058157125232229059235218281645431783064280629491569650725960078242863057952720028939990089024379895090539819777933684941022902207563526112894785617862251238365161198717106458219978536414466189285539332995765501129362169276175704890758138083507286277651847383857608988791179038580399414299478740395396330046213577626410102867121422204310059566970650371242226032159193834974183390981056053191784466296360838601553529211439427354854958775453171303532960986983974646831128646591215076588360782975133911292772846054548132095443926108506365685706581019626528726537480711406504349416587347774482073700774346991462484915485821422212130153659288165621672622387749797502013860342414219241457323994743119301421119476902895162578536845735589750721567221575635708594762429967321501370922383411988593808707433511072003769288972478964529424776051329378725374896920539313746733853008293418784938096912910101395864289472119273964080078127 is 12552605600977914172070506216699368110957057405472914878051648897855874513623326528951767423055612500659969380499693639601297160166080215169420665375193124370147280844573598479865231594211949421714190974685640702614954283750024353748614312032459931665178275559449947708725555259756459011000520954272216727418180020843073830977264678481513975948245197207183840613749853511200723730708660889363830309391483703920142179888030638600257148215325514109581296305502732951058243754425570979330203467511797160635968805927747476374000241475648386324022798401094848068881672479452551531802381829026026434264101976129664049566741167578648218104899434373714654479566000041583555609007860879750137325375341357605828539569634045134176138992462222815817906627804797059310112164457197431764731558939804931351431398374451311756481337199094992436318595763202123846391124287865386649288438533129234085868455786742359664779285790570802527750685280936034757851842967160222556110088508396764531134791892863606608608653730155485851637514741383452336457297682638462941252 - 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125,
     builtin,
     [],
     []).
step(33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875 is 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125 * 8673637146589588538368589908373462798874929690826669771891051682960324374579289431940944506593401831180675927640810665787814058157125232229059235218281645431783064280629491569650725960078242863057952720028939990089024379895090539819777933684941022902207563526112894785617862251238365161198717106458219978536414466189285539332995765501129362169276175704890758138083507286277651847383857608988791179038580399414299478740395396330046213577626410102867121422204310059566970650371242226032159193834974183390981056053191784466296360838601553529211439427354854958775453171303532960986983974646831128646591215076588360782975133911292772846054548132095443926108506365685706581019626528726537480711406504349416587347774482073700774346991462484915485821422212130153659288165621672622387749797502013860342414219241457323994743119301421119476902895162578536845735589750721567221575635708594762429967321501370922383411988593808707433511072003769288972478964529424776051329378725374896920539313746733853008293418784938096912910101395864289472119273964080078127,
     builtin,
     [],
     []).
step(15046396270139755882169381996478643392095244129742374029186132341547416857815607133202101516448837411353116003855043295078996875803673442923061702564572381592763624773250459720914596992613606599730698557487141894217336900600012163140926842404205969726472362666876671946242214813644556700980392273410515315239843045578860276718163594795584188751720608171099363284530538428430730157480343678366415652134584685514691706367580172114743778012347319196099433458994859151573685357179409308692753729015289730619767510103626409453381739200137784283785813944200010419757892515078712164144197142700683928033570661441613386363162745503015489793942383283383363962809328033915945873952727612445663479652881951379491456711317924788821470905734227913891523870224371881553668677731685120947775348125413596847102690667739112893178313975071396520794039247940920499472704831901882056503128275955343409085967480583865032234487527175706621633900265088723823110233039071098905339443099242633317977459956333361492877591518732746585830164718399179069950772505563761937980678232294232572394795549722497092290387654992098784302106918617878240702514797840779877356778624236599068444148184181351289031583341508525466673516622879983850866147657219988040216984836293252195547237515121391478744081848677813172813831162450447761846672950126140155550027015342975471941722508181840532726926862984552114763868700395635823647337616539575661229021890938389495940456723591870644034070529187432714513149380516096192909114192998061705624122714163318035287478357623084385268085665106139174989324902129154463358227825819015243923005143231020032435583961180173244916797437477151588662599251903304775646819424972660109448056698207824280705177697959061379116674762216986255520001575708167749841393782620305889113160319122166993917966362625866102181303247334509920079831257282898272931227950223734346853326223965084003858735897451541987614084387592840733501186187361111761916087702434233169478735211814331363296753422776223672672628703333965654191927489819733744071750337639249382914867168306624803777014767197742906731056076672484765625 is 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125 * 3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125,
     builtin,
     [],
     []).
step(39391976843425525456564878997271736743293940424953592997061583499661166007806741883880950031490123129820706672122983022305362708947442798516113000078386788332822709344655603327175196538862501866528374201880757256460623187706585803501038982533515830654968796174165809051742481673730780479047771489907266612701258323683890702791637118801133835062990061741544851490723940159243838806327659283898717459225345077211987735032521403685299732765118616609263069002713058907652729321826281443629142139127078118974113246319857344932960900435832949472474285018262658326354149224740692710918246567167970387593276524754006759763479487208799550573076441921931481913007865499613881963847624290083576038183807516282426497173394516239642464543750386536887238659296590006043604211489083416448700521417745575587434502943524631033158999030824770727257698738365447615530383564847705046116396355397104090419236717721322136087135756684088005612019506365904395289462750152700006859988676227071898153621140226589145419669735115495422066944336354849368198839424901299928189444750994731780338955243063572352471465870152322293625939061286683057426909011315275155675560295372563168254611738601571902865104676210050088847478030440144595636223496495153709073928268603951260030269681524033754117940170828278310771392720260568946586378219815975619601228494908680459946441540162289024311898614536559462631911415472761248955227998285380799309678389392922365544943081805160911693459164212153365337232200930180240949714336537741719226722712283153646243523175557395182168311150547186977520246225351257464837794323030133040466119035289154474869954967537684678592620305906179918235640102518684029782513015398534757767486878340741218429341573139858423548509802710841571692956073532067757754164423027263476281712998536833212455160208017643607301346462704223597397882146036129832644439981565735677265476870638950359094736100009850287177465342763571899573044636690888234185462082233107288848117748573969757468875823221912578979718390629084079854517616545570419559073331603008378553421293485218421016419638882174976629620770038700831876 is 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626 * 6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626,
     builtin,
     [],
     []).
step(54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501 is 15046396270139755882169381996478643392095244129742374029186132341547416857815607133202101516448837411353116003855043295078996875803673442923061702564572381592763624773250459720914596992613606599730698557487141894217336900600012163140926842404205969726472362666876671946242214813644556700980392273410515315239843045578860276718163594795584188751720608171099363284530538428430730157480343678366415652134584685514691706367580172114743778012347319196099433458994859151573685357179409308692753729015289730619767510103626409453381739200137784283785813944200010419757892515078712164144197142700683928033570661441613386363162745503015489793942383283383363962809328033915945873952727612445663479652881951379491456711317924788821470905734227913891523870224371881553668677731685120947775348125413596847102690667739112893178313975071396520794039247940920499472704831901882056503128275955343409085967480583865032234487527175706621633900265088723823110233039071098905339443099242633317977459956333361492877591518732746585830164718399179069950772505563761937980678232294232572394795549722497092290387654992098784302106918617878240702514797840779877356778624236599068444148184181351289031583341508525466673516622879983850866147657219988040216984836293252195547237515121391478744081848677813172813831162450447761846672950126140155550027015342975471941722508181840532726926862984552114763868700395635823647337616539575661229021890938389495940456723591870644034070529187432714513149380516096192909114192998061705624122714163318035287478357623084385268085665106139174989324902129154463358227825819015243923005143231020032435583961180173244916797437477151588662599251903304775646819424972660109448056698207824280705177697959061379116674762216986255520001575708167749841393782620305889113160319122166993917966362625866102181303247334509920079831257282898272931227950223734346853326223965084003858735897451541987614084387592840733501186187361111761916087702434233169478735211814331363296753422776223672672628703333965654191927489819733744071750337639249382914867168306624803777014767197742906731056076672484765625 + 39391976843425525456564878997271736743293940424953592997061583499661166007806741883880950031490123129820706672122983022305362708947442798516113000078386788332822709344655603327175196538862501866528374201880757256460623187706585803501038982533515830654968796174165809051742481673730780479047771489907266612701258323683890702791637118801133835062990061741544851490723940159243838806327659283898717459225345077211987735032521403685299732765118616609263069002713058907652729321826281443629142139127078118974113246319857344932960900435832949472474285018262658326354149224740692710918246567167970387593276524754006759763479487208799550573076441921931481913007865499613881963847624290083576038183807516282426497173394516239642464543750386536887238659296590006043604211489083416448700521417745575587434502943524631033158999030824770727257698738365447615530383564847705046116396355397104090419236717721322136087135756684088005612019506365904395289462750152700006859988676227071898153621140226589145419669735115495422066944336354849368198839424901299928189444750994731780338955243063572352471465870152322293625939061286683057426909011315275155675560295372563168254611738601571902865104676210050088847478030440144595636223496495153709073928268603951260030269681524033754117940170828278310771392720260568946586378219815975619601228494908680459946441540162289024311898614536559462631911415472761248955227998285380799309678389392922365544943081805160911693459164212153365337232200930180240949714336537741719226722712283153646243523175557395182168311150547186977520246225351257464837794323030133040466119035289154474869954967537684678592620305906179918235640102518684029782513015398534757767486878340741218429341573139858423548509802710841571692956073532067757754164423027263476281712998536833212455160208017643607301346462704223597397882146036129832644439981565735677265476870638950359094736100009850287177465342763571899573044636690888234185462082233107288848117748573969757468875823221912578979718390629084079854517616545570419559073331603008378553421293485218421016419638882174976629620770038700831876,
     builtin,
     [],
     []).
step(0 is 10000 mod 2, builtin, [], []).
step(33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875 = 33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875,
     builtin,
     [],
     []).
step(54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501 = 54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501,
     builtin,
     [],
     []).
