#include<bits/stdc++.h>
using namespace std;
// Biến "byLen" được đưa ra ngoài thành biến toàn cục
// để cả hàm precompute() và sol() đều có thể truy cập
vector<string> byLen[10];
// Hàm này chỉ làm một việc: tính toán trước và điền dữ liệu vào byLen
void precompute() {
for (int mask = 1; mask < (1<<9); ++mask) {
string t;
for (int d = 1; d <= 9; ++d) {
if (mask & (1<<(d-1))) {
t.push_back(char('0' + d));
}
}
byLen[(int)t.size()].push_back(t);
}
for (int L = 1; L <= 9; ++L) {
sort(byLen[L].begin(), byLen[L].end());
}
}
// Hàm sol bây giờ rất gọn gàng, chỉ tập trung vào việc tra cứu
void sol(string s) {
int L = (int)s.size();
if (L >= 10) {
cout << "123456789\n";
return;
}
auto &vec = byLen[L];
auto it = upper_bound(vec.begin(), vec.end(), s);
if (it != vec.begin()) {
--it;
cout << *it << '\n';
return;
}
if (L == 1) {
cout << 0 << '\n';
return;
}
cout << byLen[L - 1].back() << '\n';
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// GỌI HÀM TÍNH TOÁN TRƯỚC MỘT LẦN DUY NHẤT
precompute();
int test;
cin >> test;
while(test--) {
string x;
cin >> x;
sol(x);
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEJp4bq/biAiYnlMZW4iIMSRxrDhu6NjIMSRxrBhIHJhIG5nb8OgaSB0aMOgbmggYmnhur9uIHRvw6BuIGPhu6VjCi8vIMSR4buDIGPhuqMgaMOgbSBwcmVjb21wdXRlKCkgdsOgIHNvbCgpIMSR4buBdSBjw7MgdGjhu4MgdHJ1eSBj4bqtcAp2ZWN0b3I8c3RyaW5nPiBieUxlblsxMF07CgovLyBIw6BtIG7DoHkgY2jhu4kgbMOgbSBt4buZdCB2aeG7h2M6IHTDrW5oIHRvw6FuIHRyxrDhu5tjIHbDoCDEkWnhu4FuIGThu68gbGnhu4d1IHbDoG8gYnlMZW4Kdm9pZCBwcmVjb21wdXRlKCkgewogICAgZm9yIChpbnQgbWFzayA9IDE7IG1hc2sgPCAoMTw8OSk7ICsrbWFzaykgewogICAgICAgIHN0cmluZyB0OwogICAgICAgIGZvciAoaW50IGQgPSAxOyBkIDw9IDk7ICsrZCkgewogICAgICAgICAgICBpZiAobWFzayAmICgxPDwoZC0xKSkpIHsKICAgICAgICAgICAgICAgIHQucHVzaF9iYWNrKGNoYXIoJzAnICsgZCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJ5TGVuWyhpbnQpdC5zaXplKCldLnB1c2hfYmFjayh0KTsKICAgIH0KICAgIGZvciAoaW50IEwgPSAxOyBMIDw9IDk7ICsrTCkgewogICAgICAgIHNvcnQoYnlMZW5bTF0uYmVnaW4oKSwgYnlMZW5bTF0uZW5kKCkpOwogICAgfQp9CgovLyBIw6BtIHNvbCBiw6J5IGdp4budIHLhuqV0IGfhu41uIGfDoG5nLCBjaOG7iSB04bqtcCB0cnVuZyB2w6BvIHZp4buHYyB0cmEgY+G7qXUKdm9pZCBzb2woc3RyaW5nIHMpIHsKICAgIGludCBMID0gKGludClzLnNpemUoKTsKCiAgICBpZiAoTCA+PSAxMCkgewogICAgICAgIGNvdXQgPDwgIjEyMzQ1Njc4OVxuIjsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgYXV0byAmdmVjID0gYnlMZW5bTF07CiAgICBhdXRvIGl0ID0gdXBwZXJfYm91bmQodmVjLmJlZ2luKCksIHZlYy5lbmQoKSwgcyk7CiAgICBpZiAoaXQgIT0gdmVjLmJlZ2luKCkpIHsKICAgICAgICAtLWl0OwogICAgICAgIGNvdXQgPDwgKml0IDw8ICdcbic7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChMID09IDEpIHsKICAgICAgICBjb3V0IDw8IDAgPDwgJ1xuJzsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBjb3V0IDw8IGJ5TGVuW0wgLSAxXS5iYWNrKCkgPDwgJ1xuJzsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwoKICAgIC8vIEfhu4xJIEjDgE0gVMONTkggVE/DgU4gVFLGr+G7mkMgTeG7mFQgTOG6pk4gRFVZIE5I4bqkVAogICAgcHJlY29tcHV0ZSgpOwoKICAgIGludCB0ZXN0OwogICAgY2luID4+IHRlc3Q7CiAgICB3aGlsZSh0ZXN0LS0pIHsKICAgICAgICBzdHJpbmcgeDsKICAgICAgICBjaW4gPj4geDsKICAgICAgICBzb2woeCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==