ROBOT PATHS (Where I am wrong)

#include <bits/stdc++.h>

using namespace std;
#define ll long long int
#define mod 1000000007

int main() {

ll m,n,p;
cin>>m>>n>>p;

ll dp[m+1][n+1] = {{0}};

while(p>0){

   ll a, b;
   cin>>a>>b;
   
   dp[a][b] = -1;
   
   p--;

}

for(ll i=m-1;i>=1;i–){

   if(dp[i][n]==-1)
   break;
   else
   dp[i][n]= 1;

}

for(ll i=n-1;i>=1;i--){
   
   if(dp[m][i]==-1)
   break;
   else
   dp[m][i]= 1;

}

for(ll i = m-1;i>=1;i--){
for(ll j = n-1;j>=1;j--){
    
    if(dp[i][j]==-1)
    continue;
   else{
  	if(dp[i][j+1]!=-1)
    dp[i][j] =  dp[i][j+1]%mod;
    if(dp[i+1][j]!=-1)
    dp[i][j] = (dp[i+1][j]%mod+ dp[i][j]%mod)%mod;
   }     
        
        
    
    
}
}

if(dp[m][n]==-1)
dp[1][1]=0;

if(dp[1][1]==-1)
dp[1][1]=0;


std::cout << dp[1][1] << std::endl;


return 0;

}