#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
****************************************************************/