#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef pair<int,int> pi;
//bool vis[1000];
//int x[]={1,-1,0,0};
//int y[]={0,0,1,-1};
//int f=0;
//"'';
ll a,b,k;
ll util(ll a,ll b){
ll dp[a+b+1][a+b+1];
memset(dp,-1,sizeof(dp));
for(int i=0;i<=a+b;i++){
    for(int j=0;j<=i;j++){
        if(j==0||j==i){
            dp[i][j]=1;
            continue;
        }
        dp[i][j]=dp[i-1][j-1]+dp[i-1][j];
        if(dp[i][j]<0){
            return 1e18;
        }
    }
}
return dp[a+b][a];
}
int main() {
cin>>a>>b>>k;
string ans;
while(a>0||b>0){
    ll s=0;
    //cout<<a<<" "<<b<<" "<<k<<endl;
    if(a>0){
        ll z=util(a-1,b);
        s=z;
    }
    //cout<<s<<endl;
    if(s>=k){
        ans.push_back('a');
        a=a-1;
        continue;
    }
    else{
       ans.push_back('b');
       b=b-1;
       k=k-s;
    }

}
cout<<ans<<endl;
}




#include<bits/stdc++.h>
using namespace std;

template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
 
#define rep(i, n) for (ll i = 0; i < (ll)(n); i++)
#define rep1(i, n) for (ll i = 1; i <= (ll)(n); i++)
#define INF 10000000000
#define MOD 1000000007
using ll = long long;
using pint = pair<int,int>;
using pll = pair<ll,ll>;
using Graph = vector<vector<int>>;

int main(){
    int H,W,N,M; cin>>H>>W>>N>>M;
    vector<int> A(N),B(N),C(M),D(M);
    rep(i,N)cin>>A[i]>>B[i];
    rep(i,M)cin>>C[i]>>D[i];
    vector<vector<char>> S(H,vector<char>(W,'.'));
    rep(i,N)S[A[i]-1][B[i]-1]='l';
    rep(i,M)S[C[i]-1][D[i]-1]='#';
    vector<vector<int>> E(H,vector<int>(W,0));//(i,j)の上方向に電球があるかどうか
    vector<vector<int>> F(H,vector<int>(W,0));//(i,j)の下方向に電球があるかどうか
    rep(i,W){
        rep(j,H){
            if(S[j][i]=='l')E[j][i]=1;
            else if(S[j][i]=='.'){
                if(j>0){
                    E[j][i]=E[j-1][i];
                }
            }
        }
        for(int j = H-1; j >= 0; j--){
            if(S[j][i]=='l')F[j][i]=1;
            else if(S[j][i]=='.'){
                if(j<H-1){
                    F[j][i]=F[j+1][i];
                }
            }
        }
    }    
    vector<vector<int>> G(H,vector<int>(W,0));
    vector<vector<int>> I(H,vector<int>(W,0));
    rep(i,H){
        rep(j,W){
            if(S[i][j]=='l')G[i][j]=1;
            else if(S[i][j]=='.'){
                if(j>0){
                    G[i][j]=G[i][j-1];
                }
            }
        }
        for(int j = W-1; j >= 0; j--){
            if(S[i][j]=='l')I[i][j]=1;
            else if(S[i][j]=='.'){
                if(j<W-1){
                    I[i][j]=I[i][j+1];
                }
            }
        }
    }
    int res = 0;
    rep(i,H){
        rep(j,W){
            if(E[i][j]==1||F[i][j]==1||G[i][j]==1||I[i][j]==1)res++;
        }
    }
    cout<<res<<endl;
}
