#include<iostream>
#include<fstream>
#include<sstream>
#include<cstdio>
#include<stdlib.h>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<queue>
#include<vector>
#include<utility>
#include<set>
#include<map>
#include<iomanip>
using namespace std;
typedef long long ll;
typedef string str;
typedef unsigned long long ull;
typedef pair<int,int> pa;
typedef vector<ll> vin;
typedef vector<string> vs;
typedef vector<vector<ll> > vvin;
#define REP(i,a,b) for(ll i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)
#define BREP(i,a,b) for(ll i=a-1;i>=b;i--)
#define brep(i,n) BREP(i,n,0)
#define pb push_back
#define inf 999999999
#define SIZE 10000
#define mp make_pair
#define sz size()
#define NIL 0
#define DEBUG 0
#define all(vec) (vec).begin(),(vec).end()
#define NEG -1
vin heights(SIZE,NIL),ret(SIZE,NIL),predecessors(SIZE,NEG);
int last_boss;
void init() {
rep(i,SIZE) {
ret[i]=1;
predecessors[i]=NEG;
}
last_boss=NEG;
}
void solve(int syze) {
int max_len=NIL;
vin temp;
rep(i,syze)
rep(j,i) {
if(ret[j]+1>ret[i] && heights[j]<heights[i]) {
ret[i]=ret[j]+1;
predecessors[i]=j;
}
}
rep(i,syze)
if(max_len<ret[i]) {
last_boss=i;
max_len=ret[i];
}
cout<<max_len;
while(last_boss!=-1) {
temp.pb(heights[last_boss]);
last_boss=predecessors[last_boss];
}
brep(i,temp.sz)
cout<<"\n"<<temp[i];
}
int main() {
int test_cases,height,index;
stringstream ss;
str str1;
getline(cin,str1);
ss<<str1;
ss>>test_cases;
getline(cin,str1); //for blank line
rep(i,test_cases) {
init();
index=0;
if(i!=0)
cout<<"\n\n";
while(getline(cin,str1)) {
if(str1=="")
break;
stringstream converter;
converter<<str1;
converter>>height;
heights[index++]=height;
}
cout<<"Max hits: ";
solve(index);
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGZzdHJlYW0+CiNpbmNsdWRlPHNzdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0cmluZz4KI2luY2x1ZGU8Y3N0cmluZz4KI2luY2x1ZGU8Y21hdGg+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8c3RhY2s+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPHV0aWxpdHk+CiNpbmNsdWRlPHNldD4KI2luY2x1ZGU8bWFwPgojaW5jbHVkZTxpb21hbmlwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHN0cmluZyBzdHI7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiBwYWlyPGludCxpbnQ+IHBhOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmluOwp0eXBlZGVmIHZlY3RvcjxzdHJpbmc+IHZzOwp0eXBlZGVmIHZlY3Rvcjx2ZWN0b3I8bGw+ID4gdnZpbjsKCiNkZWZpbmUgUkVQKGksYSxiKSBmb3IobGwgaT1hO2k8YjtpKyspCiNkZWZpbmUgcmVwKGksbikgUkVQKGksMCxuKQojZGVmaW5lIEJSRVAoaSxhLGIpIGZvcihsbCBpPWEtMTtpPj1iO2ktLSkKI2RlZmluZSBicmVwKGksbikgQlJFUChpLG4sMCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBpbmYgOTk5OTk5OTk5CiNkZWZpbmUgU0laRSAxMDAwMAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHN6IHNpemUoKQojZGVmaW5lIE5JTCAwCiNkZWZpbmUgREVCVUcgMAojZGVmaW5lIGFsbCh2ZWMpICh2ZWMpLmJlZ2luKCksKHZlYykuZW5kKCkKI2RlZmluZSBORUcgLTEKCnZpbiBoZWlnaHRzKFNJWkUsTklMKSxyZXQoU0laRSxOSUwpLHByZWRlY2Vzc29ycyhTSVpFLE5FRyk7CmludCBsYXN0X2Jvc3M7Cgp2b2lkIGluaXQoKSB7CiAgICByZXAoaSxTSVpFKSB7CgkJcmV0W2ldPTE7CgkJcHJlZGVjZXNzb3JzW2ldPU5FRzsKCX0KCWxhc3RfYm9zcz1ORUc7Cn0KCnZvaWQgc29sdmUoaW50IHN5emUpIHsKCWludCBtYXhfbGVuPU5JTDsKCXZpbiB0ZW1wOwoJcmVwKGksc3l6ZSkKCQlyZXAoaixpKSB7CgkJCWlmKHJldFtqXSsxPnJldFtpXSAmJiBoZWlnaHRzW2pdPGhlaWdodHNbaV0pIHsKCQkJCXJldFtpXT1yZXRbal0rMTsKCQkJCXByZWRlY2Vzc29yc1tpXT1qOwoJCQl9CgkJfQoJcmVwKGksc3l6ZSkKCQlpZihtYXhfbGVuPHJldFtpXSkgewoJCQlsYXN0X2Jvc3M9aTsKCQkJbWF4X2xlbj1yZXRbaV07Cgl9Cgljb3V0PDxtYXhfbGVuOwoJd2hpbGUobGFzdF9ib3NzIT0tMSkgewoJCXRlbXAucGIoaGVpZ2h0c1tsYXN0X2Jvc3NdKTsKCQlsYXN0X2Jvc3M9cHJlZGVjZXNzb3JzW2xhc3RfYm9zc107Cgl9CglicmVwKGksdGVtcC5zeikKCQljb3V0PDwiXG4iPDx0ZW1wW2ldOwp9CgppbnQgbWFpbigpIHsKCWludCB0ZXN0X2Nhc2VzLGhlaWdodCxpbmRleDsKCXN0cmluZ3N0cmVhbSBzczsKCXN0ciBzdHIxOwoJZ2V0bGluZShjaW4sc3RyMSk7Cglzczw8c3RyMTsKCXNzPj50ZXN0X2Nhc2VzOwoJZ2V0bGluZShjaW4sc3RyMSk7IC8vZm9yIGJsYW5rIGxpbmUKCXJlcChpLHRlc3RfY2FzZXMpIHsKCQlpbml0KCk7CgkJaW5kZXg9MDsKCQlpZihpIT0wKQoJCQljb3V0PDwiXG5cbiI7CgkJd2hpbGUoZ2V0bGluZShjaW4sc3RyMSkpIHsKCQkJaWYoc3RyMT09IiIpCgkJCQlicmVhazsKCQkJc3RyaW5nc3RyZWFtIGNvbnZlcnRlcjsKCQkJY29udmVydGVyPDxzdHIxOwoJCQljb252ZXJ0ZXI+PmhlaWdodDsKCQkJaGVpZ2h0c1tpbmRleCsrXT1oZWlnaHQ7CgkJfQoJCWNvdXQ8PCJNYXggaGl0czogIjsKCQlzb2x2ZShpbmRleCk7Cgl9CglyZXR1cm4gMDsKfQo=