//問題文が難しい…（a_i -> b_iと値を変更します。b_i -> f(b_i)と値を変更します。最終的な列が同じになるfは一意でしょうか？という問題。）
//全射かをチェックするだけ。注意点としては、f(1), f(2), …ではなく、f(a_1), f(a_2)…の順で出力することくらいか。
#include <iostream>
#include <vector>
#define rep(i, n) for(i = 0; i < n; i++)
using namespace std;

int n;
int a[100000];
int b[100000];
bool isExist[100001];

int main() {
	int i;
	
	cin >> n;
	rep(i, n) cin >> a[i];
	rep(i, n) cin >> b[i];
	
	rep(i, n) isExist[b[i]] = true;
	
	int cnt = 0;
	rep(i, n) cnt += isExist[i + 1];
	
	if (cnt == n) { cout << "Yes" << endl; return 0; }
	
	cout << "No" << endl;
	
	vector<int> g, h;
	rep(i, n) {
		if (isExist[a[i]]) { g.push_back(1); h.push_back(1); }
		else { g.push_back(1); h.push_back(2); }
	}
	rep(i, n) { cout << g[i]; if (i + 1 < n) cout << " "; } cout << endl;
	rep(i, n) { cout << h[i]; if (i + 1 < n) cout << " "; } cout << endl;
	return 0;
}

### Prompt

Your task is to create a Cpp solution to the following problem:

problem

AOR Ika made a set $ S = \\ {a_1, ..., a_N \\} $ and a map $ f: S → S $. $ f (a_i) = b_i $. For any element $ x $ in the set $ S $, all maps $ g, h: S → S $ satisfying $ g (f (x)) = h (f (x)) $ are $ g (x). ) = Determine if h (x) $ is satisfied, and if not, configure one counterexample.





Example

Input

5
1 2 3 4 5
3 4 2 5 1


Output

Yes

### Response

```cpp
//問題文が難しい…（a_i -> b_iと値を変更します。b_i -> f(b_i)と値を変更します。最終的な列が同じになるfは一意でしょうか？という問題。）
//全射かをチェックするだけ。注意点としては、f(1), f(2), …ではなく、f(a_1), f(a_2)…の順で出力することくらいか。
#include <iostream>
#include <vector>
#define rep(i, n) for(i = 0; i < n; i++)
using namespace std;

int n;
int a[100000];
int b[100000];
bool isExist[100001];

int main() {
	int i;
	
	cin >> n;
	rep(i, n) cin >> a[i];
	rep(i, n) cin >> b[i];
	
	rep(i, n) isExist[b[i]] = true;
	
	int cnt = 0;
	rep(i, n) cnt += isExist[i + 1];
	
	if (cnt == n) { cout << "Yes" << endl; return 0; }
	
	cout << "No" << endl;
	
	vector<int> g, h;
	rep(i, n) {
		if (isExist[a[i]]) { g.push_back(1); h.push_back(1); }
		else { g.push_back(1); h.push_back(2); }
	}
	rep(i, n) { cout << g[i]; if (i + 1 < n) cout << " "; } cout << endl;
	rep(i, n) { cout << h[i]; if (i + 1 < n) cout << " "; } cout << endl;
	return 0;
}

```