#include <stdio.h>
int N, M;
int teacher_x[1001], teacher_y[1001];
int max_beauty = -1;
int move(int x, int y, int beauty) {
// 이동이 불가능
if (x < 0 || x > 2*N || y < 0 || y > N) return -1;
// 도착 지점에 도달
if (x == 2*N && y == 0) {
max_beauty = (max_beauty < beauty ? beauty : max_beauty);
return 1;
}
// 선생님과 만남.
for (int i = 0; i < M; i++) {
if (x == teacher_x[i] && y == teacher_y[i]) return -1;
}
// 다음 진행.
move(x + 1, y + 1, (y + 1 > beauty ? y + 1 : beauty));
move(x + 1, y - 1, (y - 1 > beauty ? y - 1 : beauty));
return -1;
}
int main() {
for (int i = 0; i < M; i++) {
scanf("%d %d", &teacher_x
[i
], &teacher_y
[i
]); }
move(0, 0, 0);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgTiwgTTsKaW50IHRlYWNoZXJfeFsxMDAxXSwgdGVhY2hlcl95WzEwMDFdOwppbnQgbWF4X2JlYXV0eSA9IC0xOwoKaW50IG1vdmUoaW50IHgsIGludCB5LCBpbnQgYmVhdXR5KSB7CiAgICAvLyDsnbTrj5nsnbQg67aI6rCA64qlCiAgICBpZiAoeCA8IDAgfHwgeCA+IDIqTiB8fCB5IDwgMCB8fCB5ID4gTikgcmV0dXJuIC0xOwoKICAgIC8vIOuPhOywqSDsp4DsoJDsl5Ag64+E64usCiAgICBpZiAoeCA9PSAyKk4gJiYgeSA9PSAwKSB7CiAgICAgICAgbWF4X2JlYXV0eSA9IChtYXhfYmVhdXR5IDwgYmVhdXR5ID8gYmVhdXR5IDogbWF4X2JlYXV0eSk7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgLy8g7ISg7IOd64uY6rO8IOunjOuCqC4KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTTsgaSsrKSB7CiAgICAgICAgaWYgKHggPT0gdGVhY2hlcl94W2ldICYmIHkgPT0gdGVhY2hlcl95W2ldKSByZXR1cm4gLTE7CiAgICB9CgogICAgLy8g64uk7J2MIOynhO2WiS4KICAgIG1vdmUoeCArIDEsIHkgKyAxLCAoeSArIDEgPiBiZWF1dHkgPyB5ICsgMSA6IGJlYXV0eSkpOwogICAgbW92ZSh4ICsgMSwgeSAtIDEsICh5IC0gMSA+IGJlYXV0eSA/IHkgLSAxIDogYmVhdXR5KSk7CgogICAgcmV0dXJuIC0xOwp9CgppbnQgbWFpbigpIHsKICAgIHNjYW5mKCIlZCAlZCIsICZOLCAmTSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE07IGkrKykgewogICAgICAgIHNjYW5mKCIlZCAlZCIsICZ0ZWFjaGVyX3hbaV0sICZ0ZWFjaGVyX3lbaV0pOwogICAgfQoKICAgIG1vdmUoMCwgMCwgMCk7CglwcmludGYoIiVkXG4iLCBtYXhfYmVhdXR5KTsKCiAgICByZXR1cm4gMDsKfQoK