#include using namespace std; const long long MAXN=1e5; const long long MAXM=(1e3)*5; /* nachalo na vhodnite p */ long long n, m; vector>c; vectorsceni[MAXM+10]; vectoranses1; vectoranses2; vectoranses3; vectoranses4; /* kraj na vhodnite p */ /// BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB /* solve1 start p */ vectorgraph[MAXN+10]; bool vis[MAXM+10]; long long secmax[MAXM+10]; long long c1[MAXN+10]; bool cmp(long long sc1, long long sc2) { return c1[secmax[sc1]]>c1[secmax[sc2]]; } /* solve1 end p */ /* solve2 start p */ vectorgraphs2[MAXN+10]; bool viss2[MAXM+10]; bool viss3[12]; vectorrelate[MAXN+10]; /* solve2 end p */ void fastIO() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); } void input() { cin>>n>>m; for (long long i=1; i<=n; i++) { long long x; cin>>x; c.push_back({x, i}); c1[i]=x; } for (long long i=1; i<=m; i++) { long long br; cin>>br; for (long long j=1; j<=br; j++) { long long x; cin>>x; sceni[i].push_back(x); } } } long long pay(vectorv) { long long br[n+10]= {}; long long currbr[n+10]= {}; for (long long i=0; i>v; for (long long scena=1; scena<=m; scena++) { long long mx1=-1; long long ind1=0; long long mx2=-1; long long ind2=0; for (long long i=0; imx1) { ind2=ind1; mx2=mx1; mx1=c1[person]; ind1=person; } else { if (c1[person]>mx2) { ind2=person; mx2=c1[person]; } } } secmax[scena]=ind2; v.push_back({mx2, scena}); } sort(v.begin(), v.end()); for (long long scena1=0; scena1()); for (long long i=0; i()); for (long long i=0; idq; dq.push_back(c[0].second); for (long long ind=1; inddqc=dq; vectorv; while (dq.size()) { v.push_back(dq.front()); dq.pop_front(); } dq=dqc; long long ans1=0; vectorpsceni; for (long long i=0; idqc=dq; vectorv; while (dq.size()) { v.push_back(dq.front()); dq.pop_front(); } dq=dqc; for (long long i=0; idq; dq.push_back(anses1[0]); for (long long i=1; idqc=dq; vectorv; while (dq.size()) { v.push_back(dq.front()); dq.pop_front(); } dq=dqc; long long ans1=0; vectorpsceni; psceni.push_back(curr); for (long long i=0; ians2) dq.push_back(curr); else dq.push_front(curr); } dequedqc=dq; vectorv; while (dq.size()) { v.push_back(dq.front()); dq.pop_front(); } anses3=v; dq=dqc; } void solve4() { dequedq; dq.push_back(anses2[0]); for (long long i=1; idqc=dq; vectorv; while (dq.size()) { v.push_back(dq.front()); dq.pop_front(); } dq=dqc; long long ans1=0; vectorpsceni; psceni.push_back(curr); for (long long i=0; ians2) dq.push_back(curr); else dq.push_front(curr); } dequedqc=dq; vectorv; while (dq.size()) { v.push_back(dq.front()); dq.pop_front(); } anses4=v; dq=dqc; } void output(vectoro) { for (long long i=0; ipay(anses3)) anses1=anses3; solve2(); solve4(); if (pay(anses2)>pay(anses4)) anses2=anses4; if (pay(anses1)>pay(anses2)) { output(anses2); //cout<