#include<bits/stdc++.h>
using namespace std;
int main() {
    int n,i,j;//定义 
    //网格的起始位置 
    cin>>n>>i>>j;//输入 
    int a=i-1;
    int b=j-1;
    int c=min(min(a,b),min(n-1-a,n-1-b));//计算位置到四边的最小距离 
    int v=n-2*c;//当前层未填充部分的边长
    int q=4*c*(n-c)+1;
    int p;
    if (a==c){//判断 
    	//位于层级上边
        p=q+(b-c);//调整步数 
    }else{
    	if(b==n-1-c){
    		//位于层级右边
        	p=q+(v-1)+(a-c);
   		}else{
    		if(a==n-1-c){
    			//位于层级下边
       			p=q+3*(v-1)-(b-c);
    		}else{ 
        		p=q+4*(v-1)-(a-c);//位于层级左边
    		}
    	}
    }
    cout<<p<<endl;//输出 
    return 0;
}

/**************************************************************
	Problem: 2332
	User: linxichen
	Language: C++
	Result: Runtime Error
****************************************************************/