Problem:
Score : 600 points

Problem Statement

Given are two integer sequences of N elements each: A_1,...,A_N and B_1,...,B_N.
Determine if it is possible to do the following operation at most N-2 times (possibly zero) so that, for every integer i from 1 to N, A_i \leq B_i holds:

Choose two distinct integers x and y between 1 and N (inclusive), and swap the values of A_x and A_y.

Constraints

2 \leq N \leq 10^5

1 \leq A_i,B_i \leq 10^9

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 ... A_N
B_1 B_2 ... B_N

Output

If the objective is achievable, print Yes; if it is not, print No.

Sample Input 1

3
1 3 2
1 2 3

Sample Output 1

Yes

We should swap the values of A_2 and A_3.

Sample Input 2

3
1 2 3
2 2 2

Sample Output 2

No

Sample Input 3

6
3 1 2 6 3 4
2 2 8 3 4 3

Sample Output 3

Yes

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

#define rep(i, N) for (int i = 0; i < (int)N; i++)
const ll MOD = pow(10,9)+7;
const ll LLINF = pow(2,61)-1;
const int INF = pow(2,30)-1;

typedef pair<int,int> P;

int main() {
  int N; cin >> N;
  vector<vector<int>> ab(N, vector<int>(2,0));
  rep(i,N) cin >> ab[i][0]; rep(i,N) cin >> ab[i][1];
  sort(ab.begin(), ab.end(), [](const vector<int> &x, const vector<int> &y){return x[1]<y[1];});
  // for (auto x: ab) cout << x[0] << " " << x[1] << endl;

  vector<P> A, B;
  rep(i,N) {
    A.push_back(make_pair(i,ab[i][0]));
    B.push_back(make_pair(i,ab[i][1]));
  }
  sort(A.begin(),A.end(), [](const P &x, const P &y){return x.second<y.second;});

  rep(i,N) if (A[i].second>B[i].second) { cout << "No" << endl; return 0; }
  int now = 0, count = 0;
  do { now = A[now].first; count++; } while(now!=0);
  if (count!=N) { cout << "Yes" << endl; return 0; }

  string result = "No";
  rep(i,N-1) if (A[i+1].second<=B[i].second) result = "Yes";
  cout << result << endl;
  return 0;
}