#include <iostream>

using namespace std;

int* f(int& i)
{
    i += 4;
    return &i;
}

int g(int i)
{
    return i *= 2;
}

void h(int* i)
{
    *i -= 3;
}

int main()
{
    int A;
    A = g(3);
    cout << A; // A= 6
    A--;
    cout << A; // A= 5
    h(&A);
    cout << A; // A= 2
    (*f(A))--;
    cout << A; // A= 5 dlaczego?
    g(A);
    cout << A;
} // A=5 ale dlaczego?