Problem:
Score : 600 points

Problem Statement

Given are two sequences A and B, both of length N.
A and B are each sorted in the ascending order.
Check if it is possible to reorder the terms of B so that for each i (1 \leq i \leq N) A_i \neq B_i holds, and if it is possible, output any of the reorderings that achieve it.

Constraints

1\leq N \leq 2 \times 10^5

1\leq A_i,B_i \leq N

A and B are each sorted in the ascending order.

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 \cdots A_N
B_1 B_2 \cdots B_N

Output

If there exist no reorderings that satisfy the condition, print No.

If there exists a reordering that satisfies the condition, print Yes on the first line.
After that, print a reordering of B on the second line, separating terms with a whitespace.

If there are multiple reorderings that satisfy the condition, you can print any of them.

Sample Input 1

6
1 1 1 2 2 3
1 1 1 2 2 3

Sample Output 1

Yes
2 2 3 1 1 1

Sample Input 2

3
1 1 2
1 1 3

Sample Output 2

No

Sample Input 3

4
1 1 2 3
1 2 3 3

Sample Output 3

Yes
3 3 1 2

Solution in C++ (GCC 9.2.1) (judge verdict: Runtime Error)

#include<bits/stdc++.h>
#define ll long long int
using namespace std;
#define mod  1000000007
#define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)

int main(){
ll t;
t=1;
fast;
//  cin>>t;

while(t--){
ll n;
cin>>n;
ll arr[n], arr1[n];

for(ll i=0; i<n;i++)
    cin>>arr[i];

for(ll i=0; i<n;i++)
    cin>>arr1[i];

ll j=0;
vector<ll> ans;
ll vis[n];
memset(vis,0,sizeof(vis));
ll f=0;

for(ll i=0; i<n;i++){
    ll k=j;
    while(arr[i]==arr1[j%n]){
        j++;
        if(j%n==k%n){
        f=1;
        cout<<"No"<<endl;
        break;
    }
    }
    if(f)
    break;

    ans.push_back(arr1[j%n]);
     //   cout<<j<<' ';
    
    if(vis[j%n]==true){
        f=1;
        cout<<"No"<<endl;
        break;
    }
//cout<<ans[i]<<' ';
    vis[j] = true;
    j++;

}
if(!f){
cout<<"Yes"<<endl;
for(ll i=0; i<n;i++)
cout<<ans[i]<<' ';
}

}
return 0;
}