#include <stdio.h>

int power (int i) {

  int square (int x) {
    return x * x;
  }

  int cube (int x) {
    return x * x * x;
  }

  return (i) ? cube : square;
}

#define SQUARE 0
#define CUBE  !0

int main () {

  int (*cube) (int) = power (CUBE);
  int (*square) (int) = power (SQUARE);

  printf ("==================================\n");
  printf ("square(5) = %u, cube(5) = %u, \n", square (5), cube (5));
  printf ("==================================\n");
  printf ("square(3) = %u, cube(3) = %u, \n", square (3), cube (3));
  printf ("==================================\n");

  return 0;
  
}