#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
#define all(x) x.begin(), x.end()
const int N = 5e4 + 5;
int n, m;
vector<array<int, 2>> a;
array<int, 2> dp1[1005][N], dp2[1005][N];
array<int, 2> suf(int pos, int rem){
if(rem < 0 || pos == n) return {0, 1};
if(dp1[pos][rem][0] != -1) return dp1[pos][rem];
auto ans = suf(pos + 1, rem);
if(rem >= a[pos][0]){
auto res = suf(pos + 1, rem - a[pos][0]);
if(res[0] + a[pos][1] > ans[0]){
ans = {res[0] + a[pos][1], res[1]};
}else if(res[0] + a[pos][1] == ans[0]){
ans[1] += res[1];
}
}
return dp1[pos][rem] = ans;
}
array<int, 2> pre(int pos, int rem){
if(rem < 0 || pos == -1) return {0, 1};
if(dp2[pos][rem][0] != -1) return dp2[pos][rem];
auto ans = pre(pos - 1, rem);
if(rem >= a[pos][0]){
auto res = pre(pos - 1, rem - a[pos][0]);
if(res[0] + a[pos][1] > ans[0]){
ans = {res[0] + a[pos][1], res[1]};
}else if(res[0] + a[pos][1] == ans[0]){
ans[1] += res[1];
}
}
return dp2[pos][rem] = ans;
}
void solve(int tc){
cin >> n >> m;
a.resize(n);
for(auto &[x, y] : a) cin >> x >> y;
memset(dp1, -1, sizeof(dp1));
memset(dp2, -1, sizeof(dp2));
auto mx = suf(0, m);
string ans;
for(int i = 0; i < n; i++){
array<int, 2> exclude = {0, 0};
for(int j = 0; j <= m; j++){
auto p = pre(i - 1, j), s = suf(i + 1, m - j);
if(p[0] + s[0] >= exclude[0]){
exclude[0] = p[0] + s[0];
exclude[1] = p[1] * s[1];
}
}
array<int, 2> include = {0, 0};
int rem = m - a[i][0];
for(int j = 0; j <= rem; j++){
auto p = pre(i - 1, j), s = suf(i + 1, rem - j);
if(p[0] + s[0] >= include[0]){
include[0] = p[0] + s[0];
include[1] = p[1] * s[1];
}
}
include[0] += a[i][1];
if(include[0] == mx[0] && include[1] == mx[1]) ans += 'A';
else if(include[0] < mx[0]) ans += 'C';
else ans += 'B';
}
cout << ans << '\n';
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int t = 1;
// cin >> t;
for(int i = 1; i <= t; i++){
// cout << "TC - " << i << ":\n";
solve(i);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGxkIGxvbmcgZG91YmxlCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQpjb25zdCBpbnQgTiA9IDVlNCArIDU7CgppbnQgbiwgbTsKdmVjdG9yPGFycmF5PGludCwgMj4+IGE7CmFycmF5PGludCwgMj4gZHAxWzEwMDVdW05dLCBkcDJbMTAwNV1bTl07CgphcnJheTxpbnQsIDI+IHN1ZihpbnQgcG9zLCBpbnQgcmVtKXsKICAgIGlmKHJlbSA8IDAgfHwgcG9zID09IG4pIHJldHVybiB7MCwgMX07CiAgICBpZihkcDFbcG9zXVtyZW1dWzBdICE9IC0xKSByZXR1cm4gZHAxW3Bvc11bcmVtXTsKICAgIGF1dG8gYW5zID0gc3VmKHBvcyArIDEsIHJlbSk7CiAgICBpZihyZW0gPj0gYVtwb3NdWzBdKXsKICAgICAgICBhdXRvIHJlcyA9IHN1Zihwb3MgKyAxLCByZW0gLSBhW3Bvc11bMF0pOwogICAgICAgIGlmKHJlc1swXSArIGFbcG9zXVsxXSA+IGFuc1swXSl7CiAgICAgICAgICAgIGFucyA9IHtyZXNbMF0gKyBhW3Bvc11bMV0sIHJlc1sxXX07CiAgICAgICAgfWVsc2UgaWYocmVzWzBdICsgYVtwb3NdWzFdID09IGFuc1swXSl7CiAgICAgICAgICAgIGFuc1sxXSArPSByZXNbMV07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRwMVtwb3NdW3JlbV0gPSBhbnM7Cn0KCmFycmF5PGludCwgMj4gcHJlKGludCBwb3MsIGludCByZW0pewogICAgaWYocmVtIDwgMCB8fCBwb3MgPT0gLTEpIHJldHVybiB7MCwgMX07CiAgICBpZihkcDJbcG9zXVtyZW1dWzBdICE9IC0xKSByZXR1cm4gZHAyW3Bvc11bcmVtXTsKICAgIGF1dG8gYW5zID0gcHJlKHBvcyAtIDEsIHJlbSk7CiAgICBpZihyZW0gPj0gYVtwb3NdWzBdKXsKICAgICAgICBhdXRvIHJlcyA9IHByZShwb3MgLSAxLCByZW0gLSBhW3Bvc11bMF0pOwogICAgICAgIGlmKHJlc1swXSArIGFbcG9zXVsxXSA+IGFuc1swXSl7CiAgICAgICAgICAgIGFucyA9IHtyZXNbMF0gKyBhW3Bvc11bMV0sIHJlc1sxXX07CiAgICAgICAgfWVsc2UgaWYocmVzWzBdICsgYVtwb3NdWzFdID09IGFuc1swXSl7CiAgICAgICAgICAgIGFuc1sxXSArPSByZXNbMV07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRwMltwb3NdW3JlbV0gPSBhbnM7Cn0KCnZvaWQgc29sdmUoaW50IHRjKXsKICAgIGNpbiA+PiBuID4+IG07CiAgICBhLnJlc2l6ZShuKTsKICAgIGZvcihhdXRvICZbeCwgeV0gOiBhKSBjaW4gPj4geCA+PiB5OwogICAgbWVtc2V0KGRwMSwgLTEsIHNpemVvZihkcDEpKTsKICAgIG1lbXNldChkcDIsIC0xLCBzaXplb2YoZHAyKSk7CiAgICBhdXRvIG14ID0gc3VmKDAsIG0pOwoKICAgIHN0cmluZyBhbnM7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKICAgICAgICBhcnJheTxpbnQsIDI+IGV4Y2x1ZGUgPSB7MCwgMH07CiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8PSBtOyBqKyspewogICAgICAgICAgICBhdXRvIHAgPSBwcmUoaSAtIDEsIGopLCBzID0gc3VmKGkgKyAxLCBtIC0gaik7CiAgICAgICAgICAgIGlmKHBbMF0gKyBzWzBdID49IGV4Y2x1ZGVbMF0pewogICAgICAgICAgICAgICAgZXhjbHVkZVswXSA9IHBbMF0gKyBzWzBdOwogICAgICAgICAgICAgICAgZXhjbHVkZVsxXSA9IHBbMV0gKiBzWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBhcnJheTxpbnQsIDI+IGluY2x1ZGUgPSB7MCwgMH07CiAgICAgICAgaW50IHJlbSA9IG0gLSBhW2ldWzBdOwogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPD0gcmVtOyBqKyspewogICAgICAgICAgICBhdXRvIHAgPSBwcmUoaSAtIDEsIGopLCBzID0gc3VmKGkgKyAxLCByZW0gLSBqKTsKICAgICAgICAgICAgaWYocFswXSArIHNbMF0gPj0gaW5jbHVkZVswXSl7CiAgICAgICAgICAgICAgICBpbmNsdWRlWzBdID0gcFswXSArIHNbMF07CiAgICAgICAgICAgICAgICBpbmNsdWRlWzFdID0gcFsxXSAqIHNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaW5jbHVkZVswXSArPSBhW2ldWzFdOwogICAgICAgICAKICAgICAgICBpZihpbmNsdWRlWzBdID09IG14WzBdICYmIGluY2x1ZGVbMV0gPT0gbXhbMV0pIGFucyArPSAnQSc7CiAgICAgICAgZWxzZSBpZihpbmNsdWRlWzBdIDwgbXhbMF0pIGFucyArPSAnQyc7CiAgICAgICAgZWxzZSBhbnMgKz0gJ0InOwogICAgfQogICAgY291dCA8PCBhbnMgPDwgJ1xuJzsKfQoKc2lnbmVkIG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgaW50IHQgPSAxOwogICAgLy8gY2luID4+IHQ7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IHQ7IGkrKyl7CiAgICAgICAgLy8gY291dCA8PCAiVEMgLSAiIDw8IGkgPDwgIjpcbiI7CiAgICAgICAgc29sdmUoaSk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==