#include <iostream>
#include <string>
using namespace std;

int indent = 0;

string tabs()
{
	return string(indent, '\t');
}

int f(int x, int y)
{
  cout << "f(" << x << "," << y << ") = ";

  if (x <= 0) {
     cout << y << endl;
     return y;
  }

  cout << "f(" << x - 1 << "," << y + 1 << ") - f(" << x / 2 << "," << y * 2 << ")" << endl;
  ++indent;
  cout << tabs() << "(" << endl << tabs();

  int answer1 = f(x - 1, y + 1);

  cout << tabs() << ")" << endl << tabs() << "(" << endl << tabs();

  int answer2 = f(x / 2, y * 2);

  cout << tabs() << ")" << endl;
  --indent;

  int answer = answer1 - answer2;

  cout << tabs() << "= (" << answer1 << ") - (" << answer2 << ") = " << answer << endl;
  return answer;
}

int main()
{
	int answer = f(4, -1);
	cout << endl << "final answer: " << answer;
	return 0;
}