#include <iostream> 
 
int potencia_imperativa_estructurada(int a, int b) { 
   int r = 1; 
   for (int i = 0; i < b; ++i) { 
      r *= a; 
   } 
   return r; 
} 
 
int potencia_imperativa_no_estructurada(int a, int b) { 
   void* eti[] = { &&no, &&si }; 
   int r = 1, i = 0;
       
ciclo: goto *eti[i < b]; 
   si: r *= a; 
       i += 1; 
       goto ciclo; 
   no: return r; 
} 
 
int potencia_funcional(int a, int b) { 
   if (b == 0) { 
      return 1; 
   } else { 
      return a * potencia_funcional(a, b - 1); 
   } 
} 
 
int main( ) { 
   int a, b; 
   std::cin >> a >> b;
   
   std::cout << potencia_imperativa_estructurada(a, b) << "\n"; 
   std::cout << potencia_imperativa_no_estructurada(a, b) << "\n"; 
   std::cout << potencia_funcional(a, b) << "\n"; 
} 
