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