#include <algorithm>
#include <array>
#include <assert.h>
#include <chrono>
#include <bitset>
#include <deque>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <map>
#include <math.h>
#include <numeric>
#include <random>
#include <queue>
#include <set>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <vector>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<double> vd;
typedef vector<bool> vb;
typedef vector<string> vs;
typedef vector<ld> vld;
typedef vector<vector<int>> vvi;
typedef vector<ll> vl;
typedef vector<vector<ll>> vvl;
typedef vector<vector<ld>> vvld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef vector<pll> vpll;

#ifdef OLBOEB
mt19937 rnd(228 + 1488 + 238 + 24111997 % 322);
#else
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
#endif

void print_time() {
#ifdef OLBOEB
    cout.flush();
    cerr << "\ntime: " << clock() * 1.0 / CLOCKS_PER_SEC << endl;
#endif
}

#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define eb emplace_back
#define sz(x) ((ll)(x).size())
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

template<class T1, class T2>
ostream& operator<< (ostream &out, pair<T1, T2> pair) { return out << "(" << pair.first << ", " << pair.second << ")";}
template<class T> ostream& operator<<(ostream& out, vector<T> vec) { out<<"("; for (auto& v: vec) out<<v<<", "; return out<<")"; }
template<class T> ostream& operator<<(ostream& out, set<T> vec) { out<<"("; for (auto& v: vec) out<<v<<", "; return out<<")"; }
template<class L, class R> ostream& operator<<(ostream& out, map<L, R> vec) { out<<"("; for (auto& v: vec) out<<v<<", "; return out<<")"; }


void no() { cout << "No" << endl; exit(0); }
void yes() { cout << "Yes" << endl; exit(0); }

int main() {
    cout << fixed << setprecision(20);
    ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);

    ll n;
    cin >> n;
    vvl x(n, vl(2));
    for (ll i = 0; i < 2; ++i) {
        for (ll j = 0; j < n; ++j) {
            cin >> x[j][1 - i];
        }
    }
    sort(all(x));
    vl a(n);
    vl b(n);
    for (ll i = 0; i < n; ++i) {
        a[i] = x[i][1];
        b[i] = x[i][0];
    }

    vl sa = a;
    sort(all(sa));
    for (ll i = 0; i < n; ++i) {
        if (sa[i] > b[i]) no();
    }

    for (ll i = 0; i < n; ++i) {
        if (sa[i] == a[i]) yes();
    }

    set<ll> bs;
    for (ll i = 0; i < n; ++i) {
        if (bs.count(b[i])) yes();
        bs.insert(b[i]);
    }

    set<ll> as;
    for (ll i = 0; i < n; ++i) {
        if (as.count(a[i])) yes();
        as.insert(a[i]);
    }

    map<ll, ll> a2i;
    for (ll i = 0; i < n; ++i) {
        a2i[sa[i]] = i;
    }

    vl p(n);
    for (ll i = 0; i < n; ++i) {
        p[i] = a2i[a[i]];
    }

    ll cnt = 0;
    ll index = 0;
    for (ll i = 0; i < n - 1; ++i) {
        index = p[index];
        if (index == 0) yes();
    }


    for (ll i = 0; i + 1 < n; ++i) {
        swap(sa[i], sa[i + 1]);
        if (sa[i] <= b[i] && sa[i + 1] <= b[i + 1]) yes();
        swap(sa[i], sa[i + 1]);
    }

    no();


    print_time();
    return 0;
}


Measured memory_bytes: 24448