#include using namespace std; int n,m; int zap[100001]; vectorgr[100001]; map,bool >used; void init() { scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&zap[i]); gr[i].push_back(i); } int a,b; for(int i=0;i tr; tr.first=start; tr.second=gr[start][i]; if(used[tr]==0) { used[tr]=1; return max(zap[start],dfs(gr[start][i])); flag=1; } } if(!flag)return zap[start]; } void solve() { for(int i=1;i<=n;i++) { cout<