#include <bits/stdc++.h>
using namespace std;
vector<int> dp;
int f(int n, int k, int l) {
if (n == 1 || n == k || n == l) return dp[n] = 1;
if (dp[n] != -1) return dp[n];
int a = (n > 1) ? f(n - 1, k, l) : 1;
int b = (n > k) ? f(n - k, k, l) : 1;
int c = (n > l) ? f(n - l, k, l) : 1;
return dp[n] = !(a && b && c);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int k, l, m;
if (!(cin >> k >> l >> m)) return 0; // Handle empty input
vector<int> v(m);
for (int i = 0; i < m; i++) {
if (!(cin >> v[i])) return 0; // Handle incomplete input
}
int n = *max_element(v.begin(), v.end());
dp.assign(n + 1, -1);
// Precompute dp values
f(n, k, l);
for (int i = 0; i < m; i++) {
cout << (dp[v[i]] ? 'a' : 'b');
}
cout << '\n'; // Ensure proper output format
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiBkcDsKCmludCBmKGludCBuLCBpbnQgaywgaW50IGwpIHsKICAgIGlmIChuID09IDEgfHwgbiA9PSBrIHx8IG4gPT0gbCkgcmV0dXJuIGRwW25dID0gMTsKICAgIGlmIChkcFtuXSAhPSAtMSkgcmV0dXJuIGRwW25dOwoKICAgIGludCBhID0gKG4gPiAxKSA/IGYobiAtIDEsIGssIGwpIDogMTsKICAgIGludCBiID0gKG4gPiBrKSA/IGYobiAtIGssIGssIGwpIDogMTsKICAgIGludCBjID0gKG4gPiBsKSA/IGYobiAtIGwsIGssIGwpIDogMTsKCiAgICByZXR1cm4gZHBbbl0gPSAhKGEgJiYgYiAmJiBjKTsKfQoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGludCBrLCBsLCBtOwogICAgaWYgKCEoY2luID4+IGsgPj4gbCA+PiBtKSkgcmV0dXJuIDA7IC8vIEhhbmRsZSBlbXB0eSBpbnB1dAoKICAgIHZlY3RvcjxpbnQ+IHYobSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgIGlmICghKGNpbiA+PiB2W2ldKSkgcmV0dXJuIDA7IC8vIEhhbmRsZSBpbmNvbXBsZXRlIGlucHV0CiAgICB9CgogICAgaW50IG4gPSAqbWF4X2VsZW1lbnQodi5iZWdpbigpLCB2LmVuZCgpKTsKICAgIGRwLmFzc2lnbihuICsgMSwgLTEpOwoKICAgIC8vIFByZWNvbXB1dGUgZHAgdmFsdWVzCiAgICBmKG4sIGssIGwpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CiAgICAgICAgY291dCA8PCAoZHBbdltpXV0gPyAnYScgOiAnYicpOwogICAgfQogICAgCiAgICBjb3V0IDw8ICdcbic7IC8vIEVuc3VyZSBwcm9wZXIgb3V0cHV0IGZvcm1hdAogICAgcmV0dXJuIDA7Cn0K