#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC optimize ("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define dbg(var) cout<<#var<<"="<<var<<" "
#define ll long long
#define nl cout<<"\n"
#define fr(i,n) for(int i=0;i<n;i++)
#define rep(i,a,n) for(int i=a;i<n;i++)
#define fast ios::sync_with_stdio(false);cin.tie(0);
#define vi vector<int>
#define vvi vector<vi>
#define pb push_back
#define fa(v) for(auto &i:v)
#define all(v) v.begin(),v.end()
#define sz(x) (x.size())
#define LSOne(S) (S & (-S))
////////////// debugger class starts from here/////
void __print(int x) {cout << x;}
void __print(long x) {cout << x;}
void __print(long long x) {cout << x;}
void __print(unsigned x) {cout << x;}
void __print(unsigned long x) {cout << x;}
void __print(unsigned long long x) {cout << x;}
void __print(float x) {cout << x;}
void __print(double x) {cout << x;}
void __print(long double x) {cout << x;}
void __print(char x) {cout << '\'' << x << '\'';}
void __print(const char *x) {cout << '\"' << x << '\"';}
void __print(const string &x) {cout << '\"' << x << '\"';}
void __print(bool x) {cout << (x ? "true" : "false");}
template<typename T, typename V>
void __print(const pair<T, V> &x) {cout << '{'; __print(x.first); cout << ','; __print(x.second); cout << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cout << '{'; for (auto &i: x) cout << (f++ ? "," : ""), __print(i); cout << "}";}
void _print() {cout << "]\n";}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cout << ", "; _print(v...);}
#ifndef ONLINE_JUDGE
#define debug(x...) cout << "[" << #x << "] = ["; _print(x)
#else
#define debug(x...)
#endif
/////// debugger class ends here /////////////
const int N=1e5+10;
struct FT {
vector<ll> ft;
FT(int n) : ft(n) {}
ll query(int b) {
ll sum = 0;
for (; b; b -= LSOne(b)) sum += ft[b];
return sum;
}
void update(int k, int v) {
for (; k <= N; k += LSOne(k)) ft[k] += v;
}
void range_update(int i, int j, int v) {
update(i, v);
update(j + 1, -v);
}
};
int main()
{
// Case #1: 1 1 2
// Case #2: 1 1 2 2 2 3
fast;
int tst,T;cin>>tst;T=tst;while(tst--){
int n;cin>>n;
cout<<"Case #"<<T-tst<<": ";
FT bit(N);int mx=0;
for(int i=0,x;i<n;i++){
cin>>x;
bit.range_update(1,x,1);
if(bit.query(mx+1)>=mx+1)mx++;
cout<<mx<<" ";
}
nl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNwcmFnbWEgY29tbWVudChsaW5rZXIsICIvc3RhY2s6MjAwMDAwMDAwIikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJ1bnJvbGwtbG9vcHMiKQojcHJhZ21hIEdDQyB0YXJnZXQoInNzZSxzc2UyLHNzZTMsc3NzZTMsc3NlNCxwb3BjbnQsYWJtLG1teCxhdngsdHVuZT1uYXRpdmUiKQoKCiNkZWZpbmUgZGJnKHZhcikgY291dDw8I3Zhcjw8Ij0iPDx2YXI8PCIgIgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBubCBjb3V0PDwiXG4iCiNkZWZpbmUgZnIoaSxuKSBmb3IoaW50IGk9MDtpPG47aSsrKQojZGVmaW5lIHJlcChpLGEsbikgZm9yKGludCBpPWE7aTxuO2krKykKI2RlZmluZSBmYXN0IGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKDApOwojZGVmaW5lIHZpIHZlY3RvcjxpbnQ+CiNkZWZpbmUgdnZpIHZlY3Rvcjx2aT4KI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmYSh2KSBmb3IoYXV0byAmaTp2KQojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksdi5lbmQoKQojZGVmaW5lIHN6KHgpICAgKHguc2l6ZSgpKQojZGVmaW5lIExTT25lKFMpIChTICYgKC1TKSkKLy8vLy8vLy8vLy8vLy8gICBkZWJ1Z2dlciBjbGFzcyAgc3RhcnRzIGZyb20gaGVyZS8vLy8vIAp2b2lkIF9fcHJpbnQoaW50IHgpIHtjb3V0IDw8IHg7fQp2b2lkIF9fcHJpbnQobG9uZyB4KSB7Y291dCA8PCB4O30Kdm9pZCBfX3ByaW50KGxvbmcgbG9uZyB4KSB7Y291dCA8PCB4O30Kdm9pZCBfX3ByaW50KHVuc2lnbmVkIHgpIHtjb3V0IDw8IHg7fQp2b2lkIF9fcHJpbnQodW5zaWduZWQgbG9uZyB4KSB7Y291dCA8PCB4O30Kdm9pZCBfX3ByaW50KHVuc2lnbmVkIGxvbmcgbG9uZyB4KSB7Y291dCA8PCB4O30Kdm9pZCBfX3ByaW50KGZsb2F0IHgpIHtjb3V0IDw8IHg7fQp2b2lkIF9fcHJpbnQoZG91YmxlIHgpIHtjb3V0IDw8IHg7fQp2b2lkIF9fcHJpbnQobG9uZyBkb3VibGUgeCkge2NvdXQgPDwgeDt9CnZvaWQgX19wcmludChjaGFyIHgpIHtjb3V0IDw8ICdcJycgPDwgeCA8PCAnXCcnO30Kdm9pZCBfX3ByaW50KGNvbnN0IGNoYXIgKngpIHtjb3V0IDw8ICdcIicgPDwgeCA8PCAnXCInO30Kdm9pZCBfX3ByaW50KGNvbnN0IHN0cmluZyAmeCkge2NvdXQgPDwgJ1wiJyA8PCB4IDw8ICdcIic7fQp2b2lkIF9fcHJpbnQoYm9vbCB4KSB7Y291dCA8PCAoeCA/ICJ0cnVlIiA6ICJmYWxzZSIpO30KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+CnZvaWQgX19wcmludChjb25zdCBwYWlyPFQsIFY+ICZ4KSB7Y291dCA8PCAneyc7IF9fcHJpbnQoeC5maXJzdCk7IGNvdXQgPDwgJywnOyBfX3ByaW50KHguc2Vjb25kKTsgY291dCA8PCAnfSc7fQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIF9fcHJpbnQoY29uc3QgVCAmeCkge2ludCBmID0gMDsgY291dCA8PCAneyc7IGZvciAoYXV0byAmaTogeCkgY291dCA8PCAoZisrID8gIiwiIDogIiIpLCBfX3ByaW50KGkpOyBjb3V0IDw8ICJ9Ijt9CnZvaWQgX3ByaW50KCkge2NvdXQgPDwgIl1cbiI7fQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gVj4Kdm9pZCBfcHJpbnQoVCB0LCBWLi4uIHYpIHtfX3ByaW50KHQpOyBpZiAoc2l6ZW9mLi4uKHYpKSBjb3V0IDw8ICIsICI7IF9wcmludCh2Li4uKTt9CiNpZm5kZWYgT05MSU5FX0pVREdFCiNkZWZpbmUgZGVidWcoeC4uLikgY291dCA8PCAiWyIgPDwgI3ggPDwgIl0gPSBbIjsgX3ByaW50KHgpCiNlbHNlCiNkZWZpbmUgZGVidWcoeC4uLikKI2VuZGlmCgovLy8vLy8vICBkZWJ1Z2dlciBjbGFzcyBlbmRzIGhlcmUgLy8vLy8vLy8vLy8vLwoKY29uc3QgaW50IE49MWU1KzEwOwpzdHJ1Y3QgRlQgewogICAgdmVjdG9yPGxsPiBmdDsKICAgIEZUKGludCBuKSA6IGZ0KG4pIHt9CiAgICBsbCBxdWVyeShpbnQgYikgewogICAgICAgIGxsIHN1bSA9IDA7CiAgICAgICAgZm9yICg7IGI7IGIgLT0gTFNPbmUoYikpIHN1bSArPSBmdFtiXTsKICAgICAgICByZXR1cm4gc3VtOwogICAgfQoKICAgIHZvaWQgdXBkYXRlKGludCBrLCBpbnQgdikgewogICAgICAgIGZvciAoOyBrIDw9IE47IGsgKz0gTFNPbmUoaykpIGZ0W2tdICs9IHY7CiAgICB9CgogICAgdm9pZCByYW5nZV91cGRhdGUoaW50IGksIGludCBqLCBpbnQgdikgIHsKICAgICAgICB1cGRhdGUoaSwgdik7CiAgICAgICAgdXBkYXRlKGogKyAxLCAtdik7CiAgICB9Cn07CmludCBtYWluKCkKewovLyAgICAgQ2FzZSAjMTogMSAxIDIKLy8gQ2FzZSAjMjogMSAxIDIgMiAyIDMKZmFzdDsKICBpbnQgdHN0LFQ7Y2luPj50c3Q7VD10c3Q7d2hpbGUodHN0LS0pewogICAgaW50IG47Y2luPj5uOwogICAgY291dDw8IkNhc2UgIyI8PFQtdHN0PDwiOiAiOwogICAgRlQgYml0KE4pO2ludCBteD0wOyAKICAgIGZvcihpbnQgaT0wLHg7aTxuO2krKyl7CiAgICAgICAgY2luPj54OwogICAgICAgIGJpdC5yYW5nZV91cGRhdGUoMSx4LDEpOwogICAgICAgIGlmKGJpdC5xdWVyeShteCsxKT49bXgrMSlteCsrOwogICAgICAgIGNvdXQ8PG14PDwiICI7CiAgICB9CiAgICBubDsKICB9ICAKfQ==