#include<bits/stdc++.h>
using namespace std;
int main() {
int n, i, j;
cin >> n >> i >> j;
int i0 = i - 1; // convert to 0-based index
int j0 = j - 1;
int k = min(min(i0, j0), min(n - 1 - i0, n - 1 - j0)); // layer number
int L = n - 2 * k; // side length of current layer
int start = 4 * k * (n - k) + 1; // start value of current layer
int result;
if (i0 == k) { // top edge
result = start + (j0 - k);
} else if (j0 == n - 1 - k) { // right edge
result = start + (L - 1) + (i0 - k);
} else if (i0 == n - 1 - k) { // bottom edge
result = start + 3 * (L - 1) - (j0 - k);
} else { // left edge (j0 == k)
result = start + 4 * (L - 1) - (i0 - k);
}
cout << result << endl;
return 0;
}
/**************************************************************
Problem: 2332
User: linxichen
Language: C++
Result: Runtime Error
****************************************************************/