#include <iostream>
#include <vector>
#define N 36
#define M 1000
using namespace std;

int main(){
  int n,m,q,ans[N][M],a;
  string s[M],b[M],sw,li;
  vector<int> on,off,k,koff;
  while(1){
    cin>>n>>m>>q;
    if(!n&&!m&&!q) break;
    for(int i=0;i<q;i++) cin>>s[i]>>b[i];
    for(int i=0;i<N;i++)
      for(int j=0;j<M;j++) ans[i][j]=1;
    for(int i=0;i<n;i++) sw+='0';
    for(int i=0;i<m;i++) li+='0';
    for(int i=0;i<q;i++){
      for(int j=0;j<n;j++){
	if(sw[j]=='1'&&s[i][j]=='0') k.push_back(j);
	if(sw[j]=='0'&&s[i][j]=='1') on.push_back(j);
	if(sw[j]=='1'&&s[i][j]=='1') off.push_back(j);
	if(sw[j]=='0'&&s[i][j]=='0') koff.push_back(j);
      }
      for(int j=0;j<m;j++){
	if(li[j]=='1'&&b[i][j]=='1'){
	  for(int l=0;l<on.size();l++) ans[on[l]][j]=0;
	  for(int l=0;l<off.size();l++) ans[off[l]][j]=0;
	  for(int l=0;l<koff.size();l++) ans[koff[l]][j]=0;
	}
	if(li[j]=='1'&&b[i][j]=='0'){
	  for(int l=0;l<on.size();l++) ans[on[l]][j]=0;
	  for(int l=0;l<k.size();l++) ans[k[l]][j]=0;
	  for(int l=0;l<koff.size();l++) ans[koff[l]][j]=0;
	}
	if(li[j]=='0'&&b[i][j]=='1'){
	  for(int l=0;l<k.size();l++) ans[k[l]][j]=0;
	  for(int l=0;l<koff.size();l++) ans[koff[l]][j]=0;
	  for(int l=0;l<off.size();l++) ans[off[l]][j]=0;
	}
	if(li[j]=='0'&&b[i][j]=='0'){
	  for(int l=0;l<on.size();l++) ans[on[l]][j]=0;
	  for(int l=0;l<k.size();l++) ans[k[l]][j]=0;
	  for(int l=0;l<off.size();l++) ans[off[l]][j]=0;
	}
      }
      k.clear();
      koff.clear();
      on.clear();
      off.clear();
      for(int j=0;j<n;j++)
	if(s[i][j]=='1') sw[j]=='0'?sw[j]='1':sw[j]='0';
      for(int j=0;j<m;j++) li[j]=b[i][j];
    }
    for(int i=0;i<m;i++){
      a=-1;
      for(int j=0;j<n;j++)
	if(ans[j][i]==1){
	  if(a==-1) a=j;
	  else{
	    a=-1;
	    break;
	  }
	}
      if(a==-1) cout<<'?';
      else{
	if(a<=9) cout<<a;
	else cout<<(char)('A'+a-10);
      }
    }
    cout<<endl;
    sw="";
    li="";
  }
  return 0;
}