#include <stdio.h>
#define NIL 0
#define NR 9
#define MASCA_COL ((1<<NR)+1)
#define MASCA_LIN (MASCA_COL<<9)
#define A1 (MASCA_LIN-1)
#define A2 (MASCA_LIN-2)
#define B1 (MASCA_LIN-3)
#define B2 (MASCA_LIN-4)
#define NRDIR 6
int n, t[2][MASCA_LIN];
int dirlin[NRDIR]=
{
-1, 0, -1, 1, 1, 0
};
int dircol[NRDIR]=
{
0, -1, 1, -1, 0, 1
};
inline int lin(int x){
return x&MASCA_LIN;
}
inline int col(int x){
return x&MASCA_COL;
}
inline int calc(int l, int c){
return (l<<NR)+c;
}
int find(int p, int w){
if(t[w][p]==p){
return p;
}
t[w][p]=find(t[w][p], w);
return t[w][p];
}
inline void unite(int x, int y, int w){
int rx, ry;
rx=find(x, w);
ry=find(y, w);
t[w][rx]=ry;
}
inline void actualizeaza(int l, int c, int w){
int p, i, j;
t[w][calc(l, c)]=calc(l, c);
for(p=0; p<NRDIR; p++){
i=l+dirlin[p];
j=c+dircol[p];
if((t[w][calc(i, j)]!=NIL)&&(find(calc(l, c), w)!=find(calc(i, j), w))){
unite(calc(l, c), calc(i, j), w);
}
}
}
inline void init(){
int i;
t[0][A1]=A1;
t[1][B1]=B1;
t[1][B2]=B2;
t[0][A2]=A2;
for(i=0; i<=n+1; i++){
t[0][calc(i, 0)]=A1;
t[0][calc(i, n+1)]=A2;
t[1][calc(0, i)]=B1;
t[1][calc(n+1, i)]=B2;
}
}
int main(){
int i, l, c;
FILE *fin, *fout;
fin=fopen("hex.in", "r");
fout=fopen("hex.out", "w");
fscanf(fin, "%d", &n);
init(n);
i=0;
while((find(A1, 0)!=find(A2, 0))&&(find(B1, 1)!=find(B2, 1))){
fscanf(fin, "%d%d", &l, &c);
actualizeaza(l, c, i&1);
i++;
}
fprintf(fout, "%d\n", i);
fclose(fin);
fclose(fout);
return 0;
}