#include <iostream>
using namespace std;
int main() {
int N, M, K;
cin >> N >> M >> K;
if (M == 0 || N == 0) {
cout << M << endl;
return 0;
}
int x = 0;
// wybór początkowego x
if (N % 2 <= M) {
x = N;
} else {
x = (N <= M ? N : M); // największe możliwe x nie większe niż M
}
for (int i = 0; i < K; i++) {
N -= x;
M -= x / 2; // dzielenie całkowite, bez ułamków
M += x;
// jeśli N lub M spadną do zera, kończymy od razu
if (N <= 0 || M <= 0) {
break;
}
// aktualizacja x po każdym kroku w zależności od nowych wartości
if (N % 2 <= M) {
x = N;
} else {
x = (N <= M ? N : M);
}
}
cout << M << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpbnQgTiwgTSwgSzsKICAgIGNpbiA+PiBOID4+IE0gPj4gSzsKCiAgICBpZiAoTSA9PSAwIHx8IE4gPT0gMCkgewogICAgICAgIGNvdXQgPDwgTSA8PCBlbmRsOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGludCB4ID0gMDsKCiAgICAvLyB3eWLDs3IgcG9jesSFdGtvd2VnbyB4CiAgICBpZiAoTiAlIDIgPD0gTSkgewogICAgICAgIHggPSBOOwogICAgfSBlbHNlIHsKICAgICAgICB4ID0gKE4gPD0gTSA/IE4gOiBNKTsgLy8gbmFqd2nEmWtzemUgbW/FvGxpd2UgeCBuaWUgd2nEmWtzemUgbmnFvCBNCiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBLOyBpKyspIHsKICAgICAgICBOIC09IHg7CiAgICAgICAgTSAtPSB4IC8gMjsgICAvLyBkemllbGVuaWUgY2HFgmtvd2l0ZSwgYmV6IHXFgmFta8OzdwogICAgICAgIE0gKz0geDsKCiAgICAgICAgLy8gamXFm2xpIE4gbHViIE0gc3BhZG7EhSBkbyB6ZXJhLCBrb8WEY3p5bXkgb2QgcmF6dQogICAgICAgIGlmIChOIDw9IDAgfHwgTSA8PSAwKSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgLy8gYWt0dWFsaXphY2phIHggcG8ga2HFvGR5bSBrcm9rdSB3IHphbGXFvG5vxZtjaSBvZCBub3d5Y2ggd2FydG/Fm2NpCiAgICAgICAgaWYgKE4gJSAyIDw9IE0pIHsKICAgICAgICAgICAgeCA9IE47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgeCA9IChOIDw9IE0gPyBOIDogTSk7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgTSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K