#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
vector<ll> adj[1000001];
vector<ll> dfs_tree[1000001];
ll parent[1000001];
ll vis[1000001];
ll vis1[1000001];
ll disc[1000001];
ll low[1000001];
ll parent1[1000001];
ll counts[1000001];
ll counts2[1000001];
ll P=1000000007;
bool vis2[1000001],ap[1000001];
ll disc1[1000001];
ll low1[1000001];
ll parent2[1000001];
set<ll> articulations;
set<ll> dhundo;
ll visit[1000001];
ll times = 0;
set<pair<ll,ll>> se;
void bridges(ll src)
{
vis1[src]=1;
disc[src]=low[src]=++times;
for(ll i=0;i<adj[src].size();i++)
{
ll v=adj[src][i];
if(!vis1[v])
{
parent1[v]=src;
bridges(v);
low[src]=min(low[v],low[src]);
if (low[v] > disc[src])
{
if(se.find({v,src})!=se.end()||se.find({src,v})!=se.end())
{
}
else
{
// cout<<src<<" "<<v<<endl;
se.insert({src,v});
}
}
}
else if(v!=parent1[src])
{
low[src]=min(low[src], disc[v]);
}
}
}
void cheti_chand_dfs(ll src)
{
if(!vis[src])
{
vis[src]=1;
for(ll i=0;i<adj[src].size();i++)
{
if(!vis[adj[src][i]])
{
parent[adj[src][i]]=src;
dfs_tree[adj[src][i]].push_back(src);
dfs_tree[src].push_back(adj[src][i]);
cheti_chand_dfs(adj[src][i]);
}
}
}
}
void dfs(ll src)
{
if(!visit[src])
{
visit[src]=1;
for(ll i=0;i<adj[src].size();i++)
{
if(!visit[adj[src][i]])
{
dfs(adj[src][i]);
}
}
}
}
void count_nodes(ll src,ll e)
{
if(dhundo.find(src)!=dhundo.end())
counts[src]=1;
else
counts[src]=0;
counts2[src]=1;
for(ll i=0;i<dfs_tree[src].size();i++)
{
ll v=dfs_tree[src][i];
if(v==e)
{
continue;
}
count_nodes(v,src);
counts[src]+=counts[v];
counts2[src]+=counts2[v];
}
}
void artic(ll u)
{
ll children = 0;
vis2[u] = true;
disc1[u] = low1[u] = ++times;
for (ll i =0; i<adj[u].size();++i)
{
ll v = adj[u][i];
if (!vis2[v])
{
children++;
parent2[v] = u;
artic(v);
low1[u] = min(low1[u], low1[v]);
if (parent2[u] == 0 && children > 1)
{
ap[u] = true;
articulations.insert(u);
}
if (parent2[u] != 0 && low1[v] >= disc1[u])
{
ap[u] = true;
articulations.insert(u);
}
}
else if (v != parent2[u])
low1[u] = min(low1[u], disc1[v]);
}
}
int main()
{
ll i,j,k,l,m,n,o,p,q,r,s,t,x;
cin>>t;
while(t--)
{
cin>>n>>m>>x;
memset(vis,0,sizeof(ll)*(n+1));
memset(vis1,0,sizeof(ll)*(n+1));
memset(low,0,sizeof(ll)*(n+1));
memset(disc,0,sizeof(ll)*(n+1));
memset(parent,0,sizeof(ll)*(n+1));
memset(parent1,0,sizeof(ll)*(n+1));
memset(counts,0,sizeof(ll)*(n+1));
memset(vis2,false,sizeof(bool)*(n+1));
memset(parent2,0,sizeof(ll)*(n+1));
memset(disc1,0,sizeof(ll)*(n+1));
memset(low1,0,sizeof(ll)*(n+1));
memset(ap,false,sizeof(bool)*(n+1));
memset(counts2,0,sizeof(ll)*(n+1));
dhundo.clear();
se.clear();
articulations.clear();
for(i=1;i<=n;i++)
{
adj[i].clear();
dfs_tree[i].clear();
}
for(i=0;i<x;i++)
{
cin>>j;
dhundo.insert(j);
}
for(i=0;i<m;i++)
{
cin>>j>>k;
adj[j].push_back(k);
adj[k].push_back(j);
}
// if x is less than 100 applying dsu;
if(dhundo.size()==n)
{
cout<<0<<" "<<1<<"\n";
continue;
}
ll ma=0;
ll point=*(dhundo.begin());
if(n<=501)
{
for(auto it:dhundo)
{
memset(visit,0,sizeof(ll)*(n+1));
visit[it]=true;
for(i=1;i<=n;i++)
{
if(dhundo.find(i)!=dhundo.end())
{
if(!visit[i])
{
dfs(i);
}
}
}
ll xxx=0;
for(i=1;i<=n;i++)
{
if(!visit[i])
xxx++;
}
if(xxx>ma)
{
ma=xxx;
point=it;
}
}
cout<<ma<<" "<<point<<"\n";
// continue;
}
times=0;
cheti_chand_dfs(1);
times=0;
bridges(1);
times=0;
count_nodes(1,0);
times=0;
artic(1);
times=0;
for(i=1;i<=n;i++)
{
if(dhundo.find(i)!=dhundo.end())
{
if(1)
{
ll xx=0,yy=0;
ll zz=0,term=0;
ll flag=1;
if(se.find({parent1[i],i})!=se.end()||se.find({i,parent1[i]})!=se.end())
{
term=1;
if(counts[1]==counts[i])
{
zz+=counts2[1]-counts2[i];
}
}
if(counts[1]==counts[i])
{
xx=counts2[1]-counts2[i];
}
else
{
flag=0;
}
for(j=0;j<dfs_tree[i].size();j++)
{
if(se.find({i,dfs_tree[i][j]})!=se.end()||se.find({dfs_tree[i][j],i})!=se.end()||term==1)
{
if(dfs_tree[i][j]!=parent1[i])
{
if(counts[dfs_tree[i][j]]==0)
{
yy+=counts2[dfs_tree[i][j]];
}
}
else
{
}
}
else
{
if(dfs_tree[i][j]!=parent1[i])
{
if(counts[dfs_tree[i][j]]==0)
{
if(term==0)
xx+=counts2[dfs_tree[i][j]];
}
else
{
if(term==0)
flag=0;
}
}
}
}
if(zz+yy>ma)
{
ma=zz+yy;
point=i;
}
if(flag==1)
{
yy+=xx;
}
if(ma<yy)
{
ma=yy;
point=i;
}
}
}
}
cout<<ma<<" "<<point<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKdmVjdG9yPGxsPiBhZGpbMTAwMDAwMV07CnZlY3RvcjxsbD4gZGZzX3RyZWVbMTAwMDAwMV07CmxsIHBhcmVudFsxMDAwMDAxXTsKbGwgdmlzWzEwMDAwMDFdOwpsbCB2aXMxWzEwMDAwMDFdOwpsbCBkaXNjWzEwMDAwMDFdOwpsbCBsb3dbMTAwMDAwMV07CmxsIHBhcmVudDFbMTAwMDAwMV07CmxsIGNvdW50c1sxMDAwMDAxXTsKbGwgY291bnRzMlsxMDAwMDAxXTsKbGwgUD0xMDAwMDAwMDA3Owpib29sIHZpczJbMTAwMDAwMV0sYXBbMTAwMDAwMV07CmxsIGRpc2MxWzEwMDAwMDFdOwpsbCBsb3cxWzEwMDAwMDFdOwpsbCBwYXJlbnQyWzEwMDAwMDFdOwpzZXQ8bGw+IGFydGljdWxhdGlvbnM7CnNldDxsbD4gZGh1bmRvOwpsbCB2aXNpdFsxMDAwMDAxXTsKIGxsIHRpbWVzID0gMDsKICAgICAgICBzZXQ8cGFpcjxsbCxsbD4+IHNlOwogICAgICAgIHZvaWQgYnJpZGdlcyhsbCBzcmMpCiAgICAgICAgewogICAgICAgICAgICB2aXMxW3NyY109MTsKICAgICAgICAgICAgZGlzY1tzcmNdPWxvd1tzcmNdPSsrdGltZXM7CiAgICAgICAgICAgIGZvcihsbCBpPTA7aTxhZGpbc3JjXS5zaXplKCk7aSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsbCB2PWFkaltzcmNdW2ldOwogICAgICAgICAgICAgICAgaWYoIXZpczFbdl0pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcGFyZW50MVt2XT1zcmM7CiAgICAgICAgICAgICAgICAgICAgYnJpZGdlcyh2KTsKICAgICAgICAgICAgICAgICAgICBsb3dbc3JjXT1taW4obG93W3ZdLGxvd1tzcmNdKTsKICAgICAgICAgICAgICAgICAgICBpZiAobG93W3ZdID4gZGlzY1tzcmNdKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2UuZmluZCh7dixzcmN9KSE9c2UuZW5kKCl8fHNlLmZpbmQoe3NyYyx2fSkhPXNlLmVuZCgpKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY291dDw8c3JjPDwiICI8PHY8PGVuZGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZS5pbnNlcnQoe3NyYyx2fSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZih2IT1wYXJlbnQxW3NyY10pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGxvd1tzcmNdPW1pbihsb3dbc3JjXSwgZGlzY1t2XSk7IAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZvaWQgY2hldGlfY2hhbmRfZGZzKGxsIHNyYykKICAgICAgICB7CiAgICAgICAgICAgIGlmKCF2aXNbc3JjXSkKICAgICAgICAgICAgewogICAgICAgICAgICB2aXNbc3JjXT0xOwogICAgICAgICAgICBmb3IobGwgaT0wO2k8YWRqW3NyY10uc2l6ZSgpO2krKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoIXZpc1thZGpbc3JjXVtpXV0pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcGFyZW50W2FkaltzcmNdW2ldXT1zcmM7CiAgICAgICAgICAgICAgICAgICAgZGZzX3RyZWVbYWRqW3NyY11baV1dLnB1c2hfYmFjayhzcmMpOwogICAgICAgICAgICAgICAgICAgIGRmc190cmVlW3NyY10ucHVzaF9iYWNrKGFkaltzcmNdW2ldKTsKICAgICAgICAgICAgICAgICAgICBjaGV0aV9jaGFuZF9kZnMoYWRqW3NyY11baV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdm9pZCBkZnMobGwgc3JjKQogICAgICAgIHsKICAgICAgICAgICAgaWYoIXZpc2l0W3NyY10pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgdmlzaXRbc3JjXT0xOwogICAgICAgICAgICBmb3IobGwgaT0wO2k8YWRqW3NyY10uc2l6ZSgpO2krKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoIXZpc2l0W2FkaltzcmNdW2ldXSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkZnMoYWRqW3NyY11baV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdm9pZCBjb3VudF9ub2RlcyhsbCBzcmMsbGwgZSkKICAgICAgICB7CiAgICAgICAgICAgIGlmKGRodW5kby5maW5kKHNyYykhPWRodW5kby5lbmQoKSkKICAgICAgICAgICAgY291bnRzW3NyY109MTsKICAgICAgICAgICAgZWxzZSAKICAgICAgICAgICAgY291bnRzW3NyY109MDsKICAgICAgICAgICAgY291bnRzMltzcmNdPTE7CiAgICAgICAgICAgIGZvcihsbCBpPTA7aTxkZnNfdHJlZVtzcmNdLnNpemUoKTtpKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGxsIHY9ZGZzX3RyZWVbc3JjXVtpXTsKICAgICAgICAgICAgICAgIGlmKHY9PWUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb3VudF9ub2Rlcyh2LHNyYyk7CiAgICAgICAgICAgICAgIGNvdW50c1tzcmNdKz1jb3VudHNbdl07CiAgICAgICAgICAgICAgIGNvdW50czJbc3JjXSs9Y291bnRzMlt2XTsKICAgICAgICAgICAgfQogICAgICAgIH0gIAoKIHZvaWQgYXJ0aWMobGwgdSkKIHsKICAgIGxsIGNoaWxkcmVuID0gMDsgCiAgICB2aXMyW3VdID0gdHJ1ZTsgCiAgICBkaXNjMVt1XSA9IGxvdzFbdV0gPSArK3RpbWVzOyAKICAgIGZvciAobGwgaSA9MDsgaTxhZGpbdV0uc2l6ZSgpOysraSkgCiAgICB7IAogICAgICAgIGxsIHYgPSBhZGpbdV1baV07CiAgICAgICAgaWYgKCF2aXMyW3ZdKSAKICAgICAgICB7IAogICAgICAgICAgICBjaGlsZHJlbisrOyAKICAgICAgICAgICAgcGFyZW50Mlt2XSA9IHU7IAogICAgICAgICAgICBhcnRpYyh2KTsgCiAgICAgICAgICAgIGxvdzFbdV0gID0gbWluKGxvdzFbdV0sIGxvdzFbdl0pOyAKICAgICAgICAgICAgaWYgKHBhcmVudDJbdV0gPT0gMCAmJiBjaGlsZHJlbiA+IDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgYXBbdV0gPSB0cnVlOwogICAgICAgICAgICAgICBhcnRpY3VsYXRpb25zLmluc2VydCh1KTsgCiAgICAgICAgICAgIH0gCiAgICAgICAgICAgIGlmIChwYXJlbnQyW3VdICE9IDAgJiYgbG93MVt2XSA+PSBkaXNjMVt1XSkgCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhcFt1XSA9IHRydWU7IAogICAgICAgICAgICAgICAgYXJ0aWN1bGF0aW9ucy5pbnNlcnQodSk7CiAgICAgICAgICAgIH0gCiAgICAgICAgfSAKICAgICAgICBlbHNlIGlmICh2ICE9IHBhcmVudDJbdV0pIAogICAgICAgICAgICBsb3cxW3VdICA9IG1pbihsb3cxW3VdLCBkaXNjMVt2XSk7IAogICAgfSAKIH0KICAgICAgICBpbnQgbWFpbigpCiAgICAgICAgewogICAgICAgICAgICBsbCBpLGosayxsLG0sbixvLHAscSxyLHMsdCx4OwogICAgICAgICAgICBjaW4+PnQ7CiAgICAgICAgICAgIHdoaWxlKHQtLSkKICAgICAgICAgICAgewogICAgICAgICAgICBjaW4+Pm4+Pm0+Png7CiAgICAgICAgICAgIG1lbXNldCh2aXMsMCxzaXplb2YobGwpKihuKzEpKTsKICAgICAgICAgICAgbWVtc2V0KHZpczEsMCxzaXplb2YobGwpKihuKzEpKTsKICAgICAgICAgICAgbWVtc2V0KGxvdywwLHNpemVvZihsbCkqKG4rMSkpOwogICAgICAgICAgICBtZW1zZXQoZGlzYywwLHNpemVvZihsbCkqKG4rMSkpOwogICAgICAgICAgICBtZW1zZXQocGFyZW50LDAsc2l6ZW9mKGxsKSoobisxKSk7CiAgICAgICAgICAgIG1lbXNldChwYXJlbnQxLDAsc2l6ZW9mKGxsKSoobisxKSk7CiAgICAgICAgICAgIG1lbXNldChjb3VudHMsMCxzaXplb2YobGwpKihuKzEpKTsKICAgICAgICAgICAgbWVtc2V0KHZpczIsZmFsc2Usc2l6ZW9mKGJvb2wpKihuKzEpKTsKICAgICAgICAgICAgbWVtc2V0KHBhcmVudDIsMCxzaXplb2YobGwpKihuKzEpKTsKICAgICAgICAgICAgbWVtc2V0KGRpc2MxLDAsc2l6ZW9mKGxsKSoobisxKSk7CiAgICAgICAgICAgIG1lbXNldChsb3cxLDAsc2l6ZW9mKGxsKSoobisxKSk7CiAgICAgICAgICAgIG1lbXNldChhcCxmYWxzZSxzaXplb2YoYm9vbCkqKG4rMSkpOwogICAgICAgICAgICBtZW1zZXQoY291bnRzMiwwLHNpemVvZihsbCkqKG4rMSkpOwogICAgICAgICAgICBkaHVuZG8uY2xlYXIoKTsKICAgICAgICAgICAgc2UuY2xlYXIoKTsKICAgICAgICAgICAgYXJ0aWN1bGF0aW9ucy5jbGVhcigpOwogICAgICAgICAgICAgZm9yKGk9MTtpPD1uO2krKykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhZGpbaV0uY2xlYXIoKTsKICAgICAgICAgICAgICAgICBkZnNfdHJlZVtpXS5jbGVhcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IoaT0wO2k8eDtpKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNpbj4+ajsKICAgICAgICAgICAgICAgIGRodW5kby5pbnNlcnQoaik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yKGk9MDtpPG07aSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaW4+Pmo+Pms7CiAgICAgICAgICAgICAgICBhZGpbal0ucHVzaF9iYWNrKGspOwogICAgICAgICAgICAgICAgYWRqW2tdLnB1c2hfYmFjayhqKTsKICAgICAgICAgICAgfSAKCiAgICAgICAgICAgCgogICAgICAgICAgICAvLyBpZiB4IGlzIGxlc3MgdGhhbiAxMDAgYXBwbHlpbmcgZHN1OwogICAgICAgICAgICAgaWYoZGh1bmRvLnNpemUoKT09bikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjb3V0PDwwPDwiICI8PDE8PCJcbiI7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgIGxsIG1hPTA7CiAgICAgICAgICAgbGwgcG9pbnQ9KihkaHVuZG8uYmVnaW4oKSk7CiAgICAgICAgICAgaWYobjw9NTAxKQogICAgICAgICAgIHsKICAgICAgICAgICAgICAgZm9yKGF1dG8gaXQ6ZGh1bmRvKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBtZW1zZXQodmlzaXQsMCxzaXplb2YobGwpKihuKzEpKTsKICAgICAgICAgICAgICAgIHZpc2l0W2l0XT10cnVlOwogICAgICAgICAgICAgICAgZm9yKGk9MTtpPD1uO2krKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIGlmKGRodW5kby5maW5kKGkpIT1kaHVuZG8uZW5kKCkpCiAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgaWYoIXZpc2l0W2ldKQogICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZzKGkpOwogICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxsIHh4eD0wOwogICAgICAgICAgICAgICAgZm9yKGk9MTtpPD1uO2krKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZighdmlzaXRbaV0pCiAgICAgICAgICAgICAgICAgICAgeHh4Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZih4eHg+bWEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbWE9eHh4OwogICAgICAgICAgICAgICAgICAgIHBvaW50PWl0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQ8PG1hPDwiICI8PHBvaW50PDwiXG4iOwogICAgICAgICAgLy8gIGNvbnRpbnVlOwogICAgICAgICAgIH0KICAgICAgICAgICAgCgogICAgICAgICAgICB0aW1lcz0wOwogICAgICAgICAgICBjaGV0aV9jaGFuZF9kZnMoMSk7CiAgICAgICAgICAgIHRpbWVzPTA7CiAgICAgICAgICAgIGJyaWRnZXMoMSk7CiAgICAgICAgICB0aW1lcz0wOwogICAgICAgICAgICBjb3VudF9ub2RlcygxLDApOwogICAgICAgICAgdGltZXM9MDsKICAgICAgICAgICBhcnRpYygxKTsKICAgICAgICAgICAgIHRpbWVzPTA7CiAgICAgICAgICAKICAgICAgICAgICBmb3IoaT0xO2k8PW47aSsrKQogICAgICAgICAgIHsKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIGlmKGRodW5kby5maW5kKGkpIT1kaHVuZG8uZW5kKCkpCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIGlmKDEpCiAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgbGwgeHg9MCx5eT0wOwogICAgICAgICAgICAgICAgICAgICAgIGxsIHp6PTAsdGVybT0wOwogICAgICAgICAgICAgICAgICAgICAgIGxsIGZsYWc9MTsKICAgIGlmKHNlLmZpbmQoe3BhcmVudDFbaV0saX0pIT1zZS5lbmQoKXx8c2UuZmluZCh7aSxwYXJlbnQxW2ldfSkhPXNlLmVuZCgpKQogICAgewogICAgICAgIHRlcm09MTsKICAgICAgICBpZihjb3VudHNbMV09PWNvdW50c1tpXSkKICAgICAgICB7CiAgICAgICAgICAgIHp6Kz1jb3VudHMyWzFdLWNvdW50czJbaV07CiAgICAgICAgfQogICAgfQogICAgICAgICAgICAgICAgICAgICAgIGlmKGNvdW50c1sxXT09Y291bnRzW2ldKQogICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgeHg9Y291bnRzMlsxXS1jb3VudHMyW2ldOwogICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICBlbHNlIAogICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnPTA7CiAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgIGZvcihqPTA7ajxkZnNfdHJlZVtpXS5zaXplKCk7aisrKQogICAgICAgICAgICAgICAgICAgICAgIHsKaWYoc2UuZmluZCh7aSxkZnNfdHJlZVtpXVtqXX0pIT1zZS5lbmQoKXx8c2UuZmluZCh7ZGZzX3RyZWVbaV1bal0saX0pIT1zZS5lbmQoKXx8dGVybT09MSkKICAgICAgICB7CiAgICAgICAgICAgIGlmKGRmc190cmVlW2ldW2pdIT1wYXJlbnQxW2ldKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihjb3VudHNbZGZzX3RyZWVbaV1bal1dPT0wKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHl5Kz1jb3VudHMyW2Rmc190cmVlW2ldW2pdXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIAogICAgICAgICAgICB7CgogICAgICAgICAgICB9CiAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICBpZihkZnNfdHJlZVtpXVtqXSE9cGFyZW50MVtpXSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGNvdW50c1tkZnNfdHJlZVtpXVtqXV09PTApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYodGVybT09MCkKICAgICAgICAgICAgICAgICAgICB4eCs9Y291bnRzMltkZnNfdHJlZVtpXVtqXV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYodGVybT09MCkKICAgICAgICAgICAgICAgICAgICBmbGFnPTA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAgIAogICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoenoreXk+bWEpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hPXp6K3l5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQ9aTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgIGlmKGZsYWc9PTEpCiAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICB5eSs9eHg7CiAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZihtYTx5eSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWE9eXk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludD1pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQ8PG1hPDwiICI8PHBvaW50PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0K