macro padd($x, psuc($y)):
    psuc(padd($x, $y))
  
macro padd($x, z()):
    $x
  
macro dec(psuc($x)):
    dec($x) + 1
  
macro dec(z()):
    0
  
macro pmul($x, z()):
    z()
  
macro pmul($x, psuc($y)):
    padd(pmul($x, $y), $x)
  
macro pexp($x, z()):
    one()
  
macro pexp($x, psuc($y)):
    pmul($x, pexp($x, $y))
  
macro fac(z()):
    one()
  
macro fac(psuc($x)):
    pmul(psuc($x), fac($x))
  
macro one():
    psuc(z())
  
macro two():
    psuc(psuc(z()))
  
macro three():
    psuc(psuc(psuc(z())))
  
macro five():
    padd(three(), two())
  
return([dec(pmul(three(), pmul(three(), three()))), dec(fac(five()))], 2)
