//求助大佬不知道哪出问题了 算不出来
//注释写好了
#include <iostream>
#define Maxsize 10000
using namespace std;
int n,m,a[Maxsize][Maxsize],sum;bool vis[Maxsize][Maxsize];
struct Node//结构体存放X、Y
{
int x;
int y;
};
int main() {
Node node;
cin >> n >> m;//输入长度和障碍物
for (int i = 1; i <=m; i++) {
cin >> node.x >> node.y;
vis[node.x][node.y]=1;//障碍物bool数组置1
a[node.x][node.y]=0;//障碍物步数置0
}
a[1][1]=1;
for (int i = 0; i <= n; i++)
for (int j = 0; i <= n; j++)
{
if(vis[i][j]==0)
{
a[i][j]+=a[i-1][j]+a[i][j-1];//递推
a[i][j]%=100003;
}
}
cout<<a[n][n]%100003;
return 0;
}