#include "hieroglyphs.h"
#include <cassert>
#include <cstdio>
#include <vector>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int pos=1;
int min1[200005];
int max1[200005];
int min2[200005];
int max2[200005];
int nmax=200000;
bool cmp(int a,int b)
{
if(max1[a]>max1[b] && max2[a]>max2[b])
{
return false;
}
else if(min1[a]<min1[b] && min2[a]<min2[b])
{
return true;
}
if(max1[b]>max1[a] && max2[b]>max2[a])
{
return true;
}
else if(min1[b]<min1[a] && min2[b]<min2[a])
{
return false;
}
pos=0;
return true;
}
std::vector<int> ucs(std::vector<int> A, std::vector<int> B)
{
pos=1;
int n=A.size();
int m=B.size();
for(int i=0;i<=nmax;i++)
{
max1[i]=-1;
max2[i]=-1;
min1[i]=n+1;
min2[i]=m+1;
}
for(int i=0;i<n;i++)
{
min1[A[i]]=min(min1[A[i]],i);
max1[A[i]]=max(max1[A[i]],i);
}
//cout<<"plm";
for(int i=0;i<m;i++)
{
min2[B[i]]=min(min2[B[i]],i);
max2[B[i]]=max(max2[B[i]],i);
}
vector<int>vals;
for(int i=0;i<=nmax;i++)
{
if(max1[i]!=-1 && max2[i]!=-1)
{
vals.push_back(i);
//cout<<i<<" ";
}
}
sort(vals.begin(),vals.end(),cmp);
if(pos==0)
{
return {-1};
}
return vals;
}