with Ada.Text_Io; use Ada.Text_Io;
procedure Nested is
function F (X: Integer; Y: Integer)
return Integer is
function G (Y: Integer) return Integer is
begin
if (Y > 0) then return 1 + G(Y-1);
else return X; end if;
end G;
begin return G (Y); end F;
begin
Put_Line (Integer'Image (F(3,2)));
end Nested;
d2l0aCBBZGEuVGV4dF9JbzsgdXNlIEFkYS5UZXh0X0lvOwpwcm9jZWR1cmUgTmVzdGVkIGlzCiBmdW5jdGlvbiBGIChYOiBJbnRlZ2VyOyBZOiBJbnRlZ2VyKSAKIHJldHVybiBJbnRlZ2VyIGlzCiAgZnVuY3Rpb24gRyAoWTogSW50ZWdlcikgcmV0dXJuIEludGVnZXIgaXMKICBiZWdpbgogICBpZiAoWSA+IDApIHRoZW4gcmV0dXJuIDEgKyBHKFktMSk7CiAgIGVsc2UgcmV0dXJuIFg7IGVuZCBpZjsKICBlbmQgRzsKIGJlZ2luIHJldHVybiBHIChZKTsgZW5kIEY7CmJlZ2luCiBQdXRfTGluZSAoSW50ZWdlcidJbWFnZSAoRigzLDIpKSk7CmVuZCBOZXN0ZWQ7Cg==