#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;
}