using System.Reflection;
using System.Text.RegularExpressions;
class P
{
static void r(string p)
{
var s = Regex.Replace(p, @"program.*", @"
using System;
class t {
static void readln(ref int v) {
v = int.Parse(Console.ReadLine());
}
static void writeln(int v) {
Console.WriteLine(v);
}
");
s = Regex.Replace(s, @"var (.*):.*", m => m.Result("static int $1;"));
s = Regex.Replace(s, @"readln\((\w+)\)", "readln(ref $1)");
s = s.Replace("begin", "static void Main() {").Replace("end.", "}}").Replace(":=", "=");
object o = new Microsoft.CSharp.CSharpCodeProvider()
.CompileAssemblyFromSource(new System.CodeDom.Compiler.CompilerParameters(), s)
.CompiledAssembly.CreateInstance("t");
o.GetType().GetMethod("Main", BindingFlags.Static | BindingFlags.NonPublic).Invoke(null, null);
}
static void Main()
{
r(@"
program test;
var a, b, c: integer;
begin
readln(a);
readln(b);
c := a + b;
writeln(c);
end.
");
r(@"
program MyProgram;
var a, b, c, d: integer;
begin
readln(a);
readln(b);
readln(d);
c := (a + b) / d;
writeln(c);
end.
");
}
}
dXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKY2xhc3MgUAp7CiAgICBzdGF0aWMgdm9pZCByKHN0cmluZyBwKQogICAgewogICAgICAgIHZhciBzID0gUmVnZXguUmVwbGFjZShwLCBAInByb2dyYW0uKiIsIEAiCiAgICAgICAgICAgICAgICB1c2luZyBTeXN0ZW07CiAgICAgICAgICAgICAgICBjbGFzcyB0IHsKICAgICAgICAgICAgICAgICAgICBzdGF0aWMgdm9pZCByZWFkbG4ocmVmIGludCB2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBpbnQuUGFyc2UoQ29uc29sZS5SZWFkTGluZSgpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVsbihpbnQgdikgewogICAgICAgICAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSh2KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICIpOwogICAgICAgIHMgPSBSZWdleC5SZXBsYWNlKHMsIEAidmFyICguKik6LioiLCBtID0+IG0uUmVzdWx0KCJzdGF0aWMgaW50ICQxOyIpKTsKICAgICAgICBzID0gUmVnZXguUmVwbGFjZShzLCBAInJlYWRsblwoKFx3KylcKSIsICJyZWFkbG4ocmVmICQxKSIpOwogICAgICAgIHMgPSBzLlJlcGxhY2UoImJlZ2luIiwgInN0YXRpYyB2b2lkIE1haW4oKSB7IikuUmVwbGFjZSgiZW5kLiIsICJ9fSIpLlJlcGxhY2UoIjo9IiwgIj0iKTsKICAgICAgICBvYmplY3QgbyA9IG5ldyBNaWNyb3NvZnQuQ1NoYXJwLkNTaGFycENvZGVQcm92aWRlcigpCiAgICAgICAgICAgIC5Db21waWxlQXNzZW1ibHlGcm9tU291cmNlKG5ldyBTeXN0ZW0uQ29kZURvbS5Db21waWxlci5Db21waWxlclBhcmFtZXRlcnMoKSwgcykKICAgICAgICAgICAgLkNvbXBpbGVkQXNzZW1ibHkuQ3JlYXRlSW5zdGFuY2UoInQiKTsKICAgICAgICBvLkdldFR5cGUoKS5HZXRNZXRob2QoIk1haW4iLCBCaW5kaW5nRmxhZ3MuU3RhdGljIHwgQmluZGluZ0ZsYWdzLk5vblB1YmxpYykuSW52b2tlKG51bGwsIG51bGwpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIE1haW4oKQogICAgewogICAgICAgIHIoQCIKcHJvZ3JhbSB0ZXN0Owp2YXIgYSwgYiwgYzogaW50ZWdlcjsKYmVnaW4KICAgIHJlYWRsbihhKTsKICAgIHJlYWRsbihiKTsKICAgIGMgOj0gYSArIGI7CiAgICB3cml0ZWxuKGMpOwplbmQuCiIpOwogICAgICAgIHIoQCIKcHJvZ3JhbSBNeVByb2dyYW07CnZhciBhLCBiLCBjLCBkOiBpbnRlZ2VyOwpiZWdpbgogICAgcmVhZGxuKGEpOwogICAgcmVhZGxuKGIpOwogICAgcmVhZGxuKGQpOwogICAgYyA6PSAoYSArIGIpIC8gZDsKICAgIHdyaXRlbG4oYyk7CmVuZC4KIik7CiAgICB9Cn0K