#include <bits/stdc++.h>

using namespace std;
const long mod = 1000000007;
typedef long long lint;

#define rep(i, n) for(int i = 0; i < (int)(n); i++)
#define repi(N) for(int i = 0; i < (int)(N); i++)
#define all(x) (x).begin(),(x).end()
#define length(x) ((int)(x).size())
#define prln(s) cout<<s<<endl;

#define str(s) string s;cin>>s;
#define int1(x) int x;cin>>x;
#define int2(x,y) int x,y;cin>>x>>y;

int paper[64][64];

void move(int x, int y){
  if(x!=0 && y==0){//yokohoko
    rep(i,64-x){
      rep(j,64){
        paper[i][j]=paper[i+x][j];
        paper[i+x][j]=0;
      }
    }
  }else if(x==0 && y!=0){//yokohoko
    rep(i,64){
      rep(j,64-x){
        paper[i][j]=paper[i][j+y];
        paper[i][j+y]=0;
      }
    }
  }
}
void print(){
  //return;
  prln("----Start");
  rep(i,64){
    rep(j,64){
      cout<<paper[i][j]<<" ";
    }
    cout<<endl;
  }
  prln("---End");
}
int linenum=0;
int main() {
  while(true){
    int2(n,m);
    int2(t,p);
    if(n*m*t*p==0){break;}
    rep(i,64){
      rep(j,64){
        paper[i][j]=0;
      }
    }
    rep(i,n){
      rep(j,m){
        paper[i][j]=1;
      }
    }
    rep(i,t){
      int2(d,c);
      if(d==1){
        for(int i=c-1;i>=0;i--){
          rep(j,m){
            paper[2*c-i-1][j]+=paper[i][j];
            paper[i][j]=0;
          }
	
        }
        move(c,0);
      }else{
        for(int i=c-1;i>=0;i--){
          rep(j,n){
            paper[j][2*c-i-1]+=paper[j][i];
            paper[j][i]=0;
	  
          }
        }
        move(0,c);
      }
    }
    int anal  =0;
    rep(i,p){
      int2(x,y);
      prln(paper[x][y]);
    
    }
  }
}


