#include <iostream>
using namespace std;

int add(int x, int y)
{
	return x+y;
}

int subtract(int x, int y)
{
  return x - y;
}

int multiply(int x, int y)
{
  return x * y;
}

int main()
{
  int x, y;
  cin >> x >> y;
  
  int op;
  cout << "0: add, 1: sub, 2: multiply" << "\n";
  cin >> op;
  
  // static binding (early binding)
  //int result;
  //switch(op)
  //{
  //  case 0: result = add(x, y); break;
  //  case 1: result = subtract(x, y); break;
  //  case 2: result = multiply(x, y); break;
  //}
  
  // cout << result << "\n";
  
  // Dynamic binding (late binding) // 속도는 좀더 느릴수있지만 더 유동적으로 쓸 수 있다.
  int(*func_ptr)(int, int) = nullptr;
  switch(op)
  {
    case 0: func_ptr = add; break;
    case 1: func_ptr = subtract; break;
    case 2: func_ptr = multiply; break;
  }
  
  cout << func_ptr(x, y) << "\n";
  
  return 0;
}