#include <bits/stdc++.h>

using namespace std;
//#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC target("avx2,avx,bmi2")
//#include "ext/pb_ds/tree_policy.hpp"
//#include "ext/pb_ds/assoc_container.hpp"
//using namespace __gnu_pbds;
//template<class T> using oredered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

#define f_ first
#define s_ second

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n , m;
    cin >> n >> m;
    vector<int> a(n), b(n), c(m);
    set<pair<int, int>> st;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    for (int& i : b) cin >> i;
    for (int& i : c) cin >> i;
    for (int i = 0; i < n; i++) {
        st.insert({a[i], b[i]});
    }
    for (int i = 0; i < m; i++) {
        st.insert({c[i], c[i]});
    }
    bool f = true;
    while (!st.empty()) {
        auto it = st.begin();
        if (it->f_ == it->s_) {
            st.erase(it);
        } else {
            st.insert({it->s_, it->f_});
            st.erase(it);
        }
        f ^= 1;
    }
    cout << (f ? "First" : "Second") << endl;
    return 0;
}
// wow1