COWBASIC is a simple, elegant language. It has two key features: addition and MOO loops. Bessie has devised a clever solution to overflow: all addition is done modulo 109+7109+7. But Bessie's real achievement is the MOO loop, which runs a block of code a fixed number of times. MOO loops and addition can, of course, be nested.
Given a COWBASIC program, please help Bessie determine what number it returns.
x = 1 10 MOO { x = ( x ) + ( x ) } RETURN x
1024This COWBASIC program computes 210210.
n = 1 nsq = 1 100000 MOO { 100000 MOO { nsq = ( nsq ) + ( ( n ) + ( ( n ) + ( 1 ) ) ) n = ( n ) + ( 1 ) } } RETURN nsq
4761This COWBASIC program computes (105∗105+1)2(105∗105+1)2 (modulo 109+7109+7).
There are three types of statements:
<variable> = <expression> <literal> MOO { <list of statements> } RETURN <variable>
There are three types of ex
A literal is a positive integer at most 100,000.
A variable is a string of at most 10 lowercase English letters.
It is guaranteed that no variable will be used or RETURNed before it is defined. It is guaranteed that RETURN will happen exactly once, on the last line of the program.
<literal>
<variable>
( <ex
x = 1
10 MOO {
x = ( x ) + ( x )
}
RETURN x
1024