#include <functional>
#include <stdio.h>

#define let void

#define Run int main
#define Say printf

#define with std::function

#define class typedef 
#define defp typedef 

class void F_STEPPROC (with <void ()>); defp F_STEPPROC * PSTEPPROC,
                                                        ** PPSTEPPROC;

let StepLeft (with <void ()> Fp)
{
  Fp ();
}

let StepRight (with <void ()> Fp)
{
  Fp ();
}

Run () 
{
  PSTEPPROC NextStep (ULONG Key)
  {
    return (Key % 2 == 0) ? StepLeft : StepRight;
  }

  PSTEPPROC Go = NextStep (1); Go ([=] () {
                                            Say ("Hello, World!" "\n");
                                          });

  return 0;
}