#include<iostream>
#include<iomanip>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<string>
#include<utility>
#include<numeric>
#include<algorithm>
#include<cmath>
#include<climits>
using namespace std;

using ll = long long;

class Stream{
public:
    Stream(){

    }
    //配列以外の入力を受け取る
    void read(){

    }
    template<typename First, typename... Rest>
    void read(First& first, Rest&... rest){
        cin >> first;
        read(rest...);
    }
    //配列を区切って出力する
    template<typename T>
    void write_vec(vector<T>& v, char divider){
        for(size_t i = 0; i < v.size(); i++){
            cout << v[i] << divider;
        }
    }
};

int main(){
    Stream io;
    
    int N, M, X, Y;
    io.read(N, M, X, Y);
    vector<int> x(N);
    vector<int> y(M);
    for(int i = 0; i < N; i++){
        io.read(x[i]);
    }
    for(int i = 0; i < M; i++){
        io.read(y[i]);
    }
    sort(x.begin(), x.end());
    sort(y.begin(), y.end());
    if(X < Y && x.back() < y.front() && X < y.front() && x.back() < Y) cout << "No War";
    else cout << "War";
    return 0;
}
#include <bits/stdc++.h>
typedef long long ll;
#define rep(i, n) for (ll i = 0; i < (ll)n; ++i)
const int MOD = 1000000007;
using namespace std;

int main(void)
{
    int n, m, X, Y;
    cin >> n >> m >> X >> Y;
    vector<int> x(n), y(m);
    rep(i, n) cin >> x[i];
    rep(i, m) cin >> y[i];
    int mx = *max_element(x.begin(), x.end());
    int mn = *min_element(y.begin(), y.end());
    string ans = "War";
    for (int z = -99; z <= 100; z++)
    {
        if (X < z && z <= Y && mx < z && z <= mn)
            ans = "No War";
    }
    cout << ans << endl;
}
