#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <numeric>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <fstream>

#define REP(I, N) for (int I = 0; I < (N); ++I)
#define PER(I, N) for (int I = (N); I >= 0; --I)
#define PERR(I, A, B) for (int I = (A); I >= (B); --I)
#define REPP(I, A, B) for (int I = (A); I <  (B); ++I)
#define REPN(I, A, B) for (int I = (A); I <= (B); ++I)
#define REPC(I, A, C) for (int I = (A); (C); ++I)
#define REPPP(I, A, B, C) for (int I = (A); I <  (B); I += C)
#define RI(X) scanf("%d", &(X))
#define RII(X, Y) scanf("%d%d", &(X), &(Y))
#define RIII(X, Y, Z) scanf("%d%d%d", &(X), &(Y), &(Z))
#define RIIII(X, Y, Z, W) scanf("%d%d%d%d", &(X), &(Y), &(Z), &(W))
#define DRI(X) int (X); scanf("%d", &X)
#define DRII(X, Y) int X, Y; scanf("%d%d", &X, &Y)
#define DRIII(X, Y, Z) int X, Y, Z; scanf("%d%d%d", &X, &Y, &Z)
#define DRIIII(X, Y, Z, W) int X, Y, Z, W; scanf("%d%d%d%d", &X, &Y, &Z, &W)
#define RS(X) scanf("%s", (X))
#define LEN(X) int(strlen(X))
#define SZ(X) int((X).size())
#define SUM(X, N) accumulate(X, X + (N), 0)
#define MS0(X) memset((X), 0, sizeof(X))
#define MSI(X) memset((X), 0xFF, sizeof(X))
#define F first
#define S second
#define MP make_pair
#define PB push_back

const int MAX = 111;

using namespace std;

int A[MAX];

int main(void) {
  DRIIII(N, M, min, max);
  REP(i, M) RI(A[i]);
  int c1 = *min_element(A, A + M);
  int c2 = *max_element(A, A + M);
  if (c1 < min) {
    printf("Incorrect");
    return 0;
  }
  if (c2 > max) {
    printf("Incorrect");
    return 0;
  }
  int cnt = N - M;
  if (cnt == 1 && c1 != min && c2 != max) {
    printf("Incorrect");
    return 0;
  }
  printf("Correct");
  return 0;
}

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int n,m,maxn,minn;
    int a[128];
    scanf("%d%d%d%d",&n,&m,&minn,&maxn);
    int need = 2;
    bool ans = true;
    for(int i=0;i<m;++i)
    {
        scanf("%d",a+i);
        if(a[i] > maxn || a[i] < minn )
            ans = false;
        if(a[i] == maxn)
            --need;
        if(a[i] == minn)
            --need;
    }

    if(!ans || need > n-m)
    {
        puts("Incorrect");
    }else
        puts("Correct");
    return 0;
}

#include <bits/stdc++.h>

using namespace std;
int n,m,ma,mi,a[10000];
bool r1,r2;
bool jo;
int main()
{
    cin>>n>>m>>mi>>ma;
    for (int i=0;i<m;i++)
    {
        cin>>a[i];
        if (a[i]<mi) jo=true;
        if (a[i]>ma) jo=true;
        if (a[i]==ma) r1=true;
        if (a[i]==mi) r2=true;
    }
    int r=r1+r2;
    r=2-r;
    if (r>n-m) jo=true;
    if (jo==true) cout<<"Incorrect";
    else cout<<"Correct";
    return 0;
}

#include <algorithm>
#include <numeric>
#include <string>
#include <cstring>
#include <set>
#include <map>
#include <vector>
#include <queue>
#include <iostream>
#include <iterator>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <sstream>
#include <utility>
#include <functional>
#include <bitset>
#include <deque>
#include <tuple>

using namespace std;

typedef long long ll;
typedef vector<int> VI;
typedef vector<vector<int> > VVI;
typedef pair<int, int> pii;

#define FOR(i, x, y) for(ll i=x; i<=y; i++)
#define FORD(i, x, y) for (ll i = x; i >= y; --i)
#define REP(i, n) for(ll i=0; i<n; i++)
#define REPD(i, n) for(ll i = n - 1; i >= 0; --i)

#define ALL(c) (c).begin(), (c).end()
#define SORT(c) sort(ALL(c))
#define UNIQ(c) SORT(c),(c).resize(unique(ALL(c))-(c).begin())
#define SZ(c) (int)(c).size()
#define CONTAINS(s,obj) (s.find(obj)!=s.end())

#define CLEAR(x) memset(x,0,sizeof x)
#define COPY(from,to) memcpy(to, from, sizeof to)

#define sq(x) ((x)*(x))
#define pb push_back
#define mp make_pair
#define X first
#define Y second

const double eps = 1.0e-11;
const double pi = acos(-1.0);

int main() {
  ios_base::sync_with_stdio(0);
  int n, m, mn, mx, rmx = 0, rmn = 100, x;
  cin >> n >> m >> mn >> mx;
  REP(i, m) {
    cin >> x;
    rmn = min(rmn, x);
    rmx = max(rmx, x);
  }

  if (rmn < mn || rmx > mx) {
    cout << "Incorrect\n";
    return 0;
  }

  int need = (rmn != mn) + (rmx != mx);
  if (need > n - m) cout << "Incorrect\n";
  else  cout << "Correct\n";
  return 0;
}

#include<bits/stdc++.h>
#define int         long long
#define double      long double
#define vi          vector<int>
#define vii         vector<vector<int>>
#define pii         pair<int,int>
#define mii         map<int,int>
#define pb          push_back
#define pf          push_front
#define mp(a,b)          make_pair((a),(b))
#define vpii        vector<pair<int,int>>
#define fo(i,l,n)   for(int i{l}; i<n; i++)
#define rf(s)       for(auto &c : s)
#define all(a)      (a).begin(),(a).end()
#define rall(a)     (a).rbegin(),(a).rend()
#define PI          3.141592653589
#define sz(x)       (int)x.size()
#define bs(v,n)     binary_search(all((v)),(n))
#define lb(v,n)     lower_bound(all((v)),(n))
#define ub(v,n)     upper_bound(all((v)),(n))
#define tezz        ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define MOD         1000000007

using namespace std;

signed main(){
    tezz

     #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif

    int n,m,min,max,p;
    cin >> n >> m >> min >> max;
    bool mm=false,mx=false;
    fo(i,0,m){
        cin >> p;
        if(p==min){
            mm=true;
        }
        if(p==max){
            mx=true;
        }
        if(p>max || p<min){
            cout << "Incorrect";
            return 0;
        }
    }
    if(mx && mm){
        cout << "Correct";
    }
    else if(mx || mm){
        if((n-m)>=1){
            cout << "Correct";
        }
        else{
            cout << "Incorrect";
        }
    }
    else{
        if((n-m)>=2){
            cout << "Correct";
        }
        else{
            cout << "Incorrect";
        }
    }

    return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include <set>
#include <map>
#include <cmath>
#include <stack>
#include <queue>
#include <string>
#include <cstdio>
#include <vector>
#include <cctype>
#include <climits>
#include <ctime>
#include <sstream>
#include <cstdlib>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

#define fast ios_base::sync_with_stdio(false)

#define si(a) cin>>a
#define si2(a,b) cin>>a>>b
#define si3(a,b,c) cin>>a>>b>>c

#define read freopen("in.in","r",stdin)
#define write freopen("out.in","w",stdout)

#define rep(i,a,b) for(int i=a;i<b;++i)
#define rep_(i,a,b) for(int i=a;i>=b;--i)
#define wh(t) while(t--)

#define Set(a,b) memset(a,b,sizeof a)
#define Vset(a,b,c) a.resize(b,c)
#define clr(a) a.clear()
#define Sz(a) a.size()
#define Arrsz(a) sizeof a / sizeof a[0]
#define All(a) (a.begin(),a.end())
#define mp make_pair
#define mpp(a,b,c) mp(mp(a,b),c)

#define Bug puts("Bug")
#define Nl puts("");
#define Vi vector
#define pr pair
#define N (int)1e5
#define oo 2e6

#define isnum(a) (a>=48 && a<=57)
#define isS(a) (a>='a' && a<='z')
#define isU(a) (a>='A' && a<='Z')
#define toS(a) (isU(a)?a+32:a)
#define toU(a) (isS(a)?a-32:a)
#define toC(a) a&15

typedef long long lli;
typedef unsigned long long llu;
typedef Vi<int> vi;
typedef pr<int, int> pii;
typedef pr<pii, int> piii;
typedef map<int, int>::iterator Mit;
typedef set<lli>::iterator Sit;

int gcd(int a, int b){ return (a == 0) ? b : (b == 0) ? a : gcd(b, a%b); }
int str_div(char *s, int n){ int y = 0, ln = strlen(s); rep(i, 0, ln)y = (y * 10 + (s[i] - 48)) % n; return y; }

inline lli get(){
    lli y, s = 1, i = 10;
    y = 0;
    char c = getchar();
    while (!isnum(c)){
        if (c == '-')s = -1; c = getchar();
    }
    while (isnum(c))y = (y << 1) + (y << 3) + (toC(c)), c = getchar();
    if (c != '.')return y*s;
    c = getchar();
    while (isnum(c))y = y + (toC(c)) / i, i = (i << 1) + (i << 3), c = getchar();
    return y*s;
}

inline void put(int n)
{
    int m = n, rev, count = 0;
    rev = m;
    if (m == 0) { putchar('0'); putchar('\n'); return; }
    while ((rev % 10) == 0) { count++; rev /= 10; }
    rev = 0;
    while (m != 0) { rev = (rev << 3) + (rev << 1) + m % 10; m /= 10; }
    while (rev != 0) { putchar(rev % 10 + '0'); rev /= 10; }
    while (count--) putchar('0');
}

int dx[] = { 1, -1, 0, 0, 0, 1, 1, -1, -1 };
int dy[] = { 0, 0, 1, -1, 0, -1, 1, -1, 1 };
int a, b, n, m, mn, mx;
int main()
{
    n = get(), m = get(), mn = get(), mx = get();
    rep(i, 0, m){
        int x = get();
        if (x == mn) a = 1;
        if (x == mx) b = 1;
        if (x > mx || x < mn){ puts("Incorrect"); return 0; }
    }
    if (n - m < 2 - a - b)puts("Incorrect");
    else puts("Correct");
}

#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
#include <algorithm>
#include <cstdio>
#include <set>
#include <queue>
#include <cassert>
#include <climits>
using namespace std;
int main() {
	int n, m, mn, mx, cmin = 100000, cmax = 0;
	scanf("%d%d%d%d", &n, &m, &mn, &mx);
	for (int i = 0; i < m; ++i) {
		int a;
		scanf("%d", &a);
		cmin = min(cmin, a);
		cmax = max(cmax, a);
	}
	if (cmin < mn || cmax > mx) printf("Incorrect\n");
	else if (cmin == mn || cmax == mx || n - m >= 2) printf("Correct\n");
	else printf("Incorrect\n");
}

#include <iostream>
#include <cstdio>
#include <algorithm>
#define INF 1000000015

int main()
{
//	freopen("input.txt", "r", stdin);
//	freopen("output.txt", "w", stdout);
	int m, n, min, max, min1, max1, t;

	scanf("%d%d%d%d", &n, &m, &min, &max);
	min1=INF; max1=0;
	for (int i=1; i<=m; ++i)
	{
		scanf("%d", &t);
		if (t>max1) max1=t;
		if (t<min1) min1=t;
	}

	if (((n-m==1)&&(max1!=max)&&(min1!=min))||(max1>max)||(min1<min))
		printf("Incorrect");
	else
		printf("Correct");

	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,min,max;  cin >> n >> m >> min >> max ;
    vector<int>myvec; myvec.push_back(min);  myvec.push_back(max);
    int mi;
    for (int x=0; x<m; x++)
    {
        cin >> mi ;
        if (mi != min && mi != max)
            myvec.push_back(mi);
    }
    sort(myvec.begin(),myvec.end());
    if (myvec.size() <= n && myvec[0] == min && myvec[myvec.size()-1] == max)
        cout << "Correct";
    else
        cout << "Incorrect";

    return 0;
}

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
#define F first
#define S second
#define ii pair <int,int>

const int N=110;

int n,m,mn,mx,a[N];
bool q1,q2,q;

int main()
{
    scanf("%d%d%d%d",&n,&m,&mn,&mx);
    for(int i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
        if(a[i]<mn)
            q=1;
        if(a[i]>mx)
            q=1;
    }

    if(q)
    {
        printf("Incorrect");
        return 0;
    }

    if(n-m>=2)
    {
        printf("Correct");
        return 0;
    }

    for(int i=0;i<m;i++)
    {
        if(a[i]==mn)
            q1=1;
        if(a[i]==mx)
            q2=1;
    }

    if(n-m==1)
    {
        if(q1+q2>=1)
            printf("Correct");
        else
            printf("Incorrect");

        return 0;
    }

    if(q1+q2==2)
        printf("Correct");
    else
        printf("Incorrect");
}

///                         .
///                     /   ))     |\         )               ).
///               c++. (\  ( `.    / )  (\   ( `.     ).     ( (
///               | |   ))  ) )   ( (   `.`.  ) )    ( (      ) )
///               | |  ( ( / _..----.._  ) | ( ( _..----.._  ( (
/// ,-.           | |---) V.'-------.. `-. )-/.-' ..------ `--) \._
/// | /===========| |  (   |      ) ( ``-.`\/'.-''           (   ) ``-._
/// | | / / / / / | |--------------------->  <-------------------------_>=-
/// | \===========| |                 ..-'./\.`-..                _,,-'
/// `-'           | |-------._------''_.-'----`-._``------_.-----'
///               | |         ``----''            ``----''
///               | |
///               c++`

///██╗ ██████╗ ██╗    ██████╗  ██████╗  ██████╗   ██████╗
///██║██╔═══██╗██║    ╚════██╗██╔═████╗ ╚════██╗ ██╔═████╗
///██║██║   ██║██║     █████╔╝██║██╔██║  █████╔╝ ██║██╔██║
///██║██║   ██║██║    ██╔═══╝ ████╔╝██║ ██╔═══╝  ████╔╝██║
///██║╚██████╔╝██║    ███████╗╚██████╔╝ ███████╗ ╚██████╔╝
///╚═╝ ╚═════╝ ╚═╝    ╚══════╝ ╚═════╝  ╚══════╝  ╚═════╝

#include<bits/stdc++.h>
#include<fstream>
#define ll long long
#define ld long double
#define pb push_back
#define pf push_front
#define fr first
#define sc second
#define mlojins cout.tie(NULL);
#define bzbz cin.tie(NULL);
#define CODER ios_base::sync_with_stdio(0)  ;
#define p_b pop_back
#define p_f pop_front
#define Qulukh
#define quluq return 0;
#define Zohiri_dzd
#define Mekh
#define Black_star
using namespace std ;

const ll N = 1e6 + 1;

map <ll , ll> mp , pm ;
deque <ll> v , vc , ve ,vv , vd ;
deque <char> p , pe ;
deque <string> ts , ss , st ;
deque <double> sd , ds ;
ll a , b , c , d , e , f , cnt , ans , r , n , l , x , y ;
ld q , t , cnt1 , cnt2 ;
string g , h , w , o , m , s ;
char z , u ;
bool re , rt ;
vector<pair < ll , ll > > pr , rp , pp ;
map < pair < char , char > , ll > aw , wa ;

int main ()
{
    bzbz
    mlojins
    Qulukh
    Mekh
    CODER
    Zohiri_dzd
    Black_star
    ///freopen("input.txt" , "r" , stdin );
    ///freopen("output.txt", "w" , stdout );
    ///Author :: Murtazoev Alijon
    cin >> a >> b >> c >> d ;
    for (ll i = 0 ; i < b ; i ++ )
    {
        cin >> e ;
        v.pb(e) ;
    }
    sort(v.begin() , v.end()) ;
    cnt = v[0] ;
    ans = v[v.size() - 1] ;
    if (cnt < c or ans > d)
        cout << "Incorrect" << endl ;
    else if (cnt == c and ans == d)
        cout << "Correct" << endl ;
    else if ((cnt == c and ans != d) or (cnt != c and ans == d))
        cout << "Correct" << endl ;
    else if (cnt != c and ans != d and a - b >= 2)
        cout << "Correct" << endl ;
    else
        cout << "Incorrect" << endl ;
}
///Mmavl studios
///Eco students

#include <iostream>
#include <vector>
#include <set>
#include <queue>
#include <map>
#include <string>
#include <algorithm>
using namespace std;

int main(int argc, char* argv[]){
	int n, m, min, max;
	cin >> n >> m >> min >> max;
	vector<int> data = vector<int>(m);
	bool hasMin = false;
	bool hasMax = false;
	int searchedMin = 100000;
	int searchedMax = -10000;
	for(int i = 0; i < data.size(); i++){
		cin >> data[i];
		if(data[i] == min){
			hasMin = true;
		}
		if(data[i] == max){
			hasMax = true;
		}
		if(data[i] > searchedMax){
			searchedMax = data[i];
		}
		if(data[i] < searchedMin){
			searchedMin = data[i];
		}
	}
	if(searchedMax > max || searchedMin < min){
		cout << "Incorrect" << endl;
		return 0;
	}
	int countreq = 2;
	if(hasMin){
		countreq--;
	}
	if(hasMax){
		countreq--;
	}
	if((countreq <= (n - m))){
		cout << "Correct" << endl;
	}else{
		cout << "Incorrect" << endl;
	}
	return 0;
}

#include <iostream>
 #include <algorithm>
#include <set>
 #include <vector>
#include<fstream>
using namespace std;
int total, cur, a[105], _min, _max;
int main()
{
	cin >> total >> cur >> _min  >>_max;
	bool f1=0,f2=0,flag=1;
	for (int i = 1; i <= cur; i++)
	{
		cin >> a[i];
		if (a[i] == _min)
			f1 = 1;
		if (a[i] == _max)
			f2 = 1;
		if (a[i] > _max || a[i] < _min)
			flag = 0;
	}
	if (flag)
	{
		if (f1 == 1 && f2 == 1)
			cout << "Correct";
		else if (f1 == 1 || f2 == 1)
			if (total == cur)
				cout << "Incorrect";
			else
				cout << "Correct";
		else
			if (total - cur < 2)
				cout << "Incorrect";
			else
				cout << "Correct";
	}
	else
		cout << "Incorrect";
	return 0;
}

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
int main()
{
    int data[125];
    int n,m,MAX,MIN;
    scanf("%d %d %d %d",&n,&m,&MIN,&MAX);
    for(int i=0;i<m;i++)
     cin>>data[i];
   sort(data,data+m);
    int a=data[0];
    int b=data[m-1];
      if( MIN>a)
        cout<<"Incorrect";
    else if(MAX<b)
        cout<<"Incorrect";
    else if(a==MIN && b==MAX)
        cout<<"Correct";
    else if(a==MIN && (n-m)>=1)
        cout<<"Correct";
    else if(b==MAX &&(n-m)>=1)
         cout<<"Correct";
   else if((n-m)>=2)
        cout<<"Correct";
     else cout<<"Incorrect";
    cout<<endl;
}

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int m,n, Min, Max, mn=0, mx=0, NN, f=0;
    scanf("%d %d %d %d",&n,&m,&Min,&Max);
    for(int i=0; i<m; i++)
    {
        scanf("%d",&NN);
        if(NN>Max||NN<Min) f=1;
        if(Min==NN) mn=1;
        if(Max==NN) mx=1;
    }
    if(mn+mx==2&&f==0)
        puts("Correct");
    else
    {
        int cantake=n-m;
        if( (mn+mx)==0&&cantake>1 &&f==0 ) puts("Correct");
        else if( (mn+mx)==1&&cantake>0 &&f==0 )  puts("Correct");
        else puts("Incorrect");
    }
    return 0;
}

#include <stdio.h>
#include <string.h>

int n, m, Min, Max, num[105];

bool judge() {
  int f1 = 0, f2 = 0;
  for (int i = 0; i < m; i++) {
  if (num[i] < Min || num[i] > Max)
    return false;
  if (num[i] == Min) f1--;
  if (num[i] == Max) f2--;
  }
  int yu = n - m;
  if (!f1) yu--;
  if (!f2) yu--;
  if (yu < 0) return false;
  return true;
}

int main() {
  scanf("%d%d%d%d", &n, &m, &Min, &Max);
  for (int i = 0; i < m; i++)
  scanf("%d", &num[i]);
  if (judge()) printf("Correct\n");
  else printf("Incorrect\n");
  return 0;
}

#include<iostream>
#include<vector>
#include<climits>
#include<algorithm>
#include<stdio.h>
#include<cstring>
#include<map>
#include<set>
#include<tr1/unordered_map>
using namespace std;
using namespace std::tr1;
#define LL long long

int n, m, mini, maxi;
int mini2=INT_MAX, maxi2=INT_MIN;

int main(void)
{
	//ios_base::sync_with_stdio(false);
	cin >> n >> m >> mini >> maxi;
	for(int i=0;i<m;i++)
	{
		int x;
		cin >> x;
		mini2=min(mini2, x);
		maxi2=max(maxi2, x);
	}
	if(mini2<mini||maxi2>maxi)
		cout << "Incorrect";
	else if(n==m)
	{
		if(mini!=mini2||maxi!=maxi2)
			cout << "Incorrect";
		else cout << "Correct";
	}
	else if(m==n-1)
	{
		if(mini!=mini2&&maxi!=maxi2)
			cout << "Incorrect";
		else cout << "Correct";
	}
	else cout << "Correct";
}

#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
#include <functional>
#include <iomanip>
#include <algorithm>
#include <string>
#include <cstdio>
#include <cstring>
#include <map>
#include <set>
#define int64 long long
#define rep(i,a,b) for (int i = a; i <= b; i++)
#define repd(i,a,b) for (int i = a; i >= b; i--)
#define mp make_pair

using namespace std;

const int N = 3000000;
const int inf = 1e9;

int a[N], min1, max1, n, m;

int main()
{
#ifdef _DEBUG
{
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
}
#endif
    cin >> n >> m >> min1 >> max1;
    rep(i,1,m) cin >> a[i];
    int min2 = inf, max2 = -inf;
    rep(i,1,m)
    {
        min2 = min(min2, a[i]);
        max2 = max(max2, a[i]);
    }
    bool f = true;
    if (min2 < min1) f = false;
    if (max2 > max1) f = false;
    int k = 0;
    if (max1 != max2) k++;
    if (min1 != min2) k++;
    if (k > n - m) f = false;
    if (f) cout << "Correct";
    else cout << "Incorrect";
    return 0;
}

#include <algorithm>
#include <cctype>
#include <cstdio>
#include <cstring>
#include <functional>
#include <iostream>
#include <unistd.h>
#include <utility>
#include <vector>
#include <map>

using namespace std;

int main(){
    int i,z,j,k,t,h,ans = 0;
    int a,b,c,d;
    int n,m,min,max;
    scanf("%d%d%d%d",&n,&m,&min,&max);
    int a_min = 1000;
    int a_max = -100;
    int a_temp;

    for(i=0;i<m;i++){
        scanf("%d",&a_temp);
        if( a_temp < a_min )
            a_min = a_temp;
        if( a_temp > a_max )
            a_max = a_temp;
    }

    int how_many_more_needed = 2;
    //How much correct
        if( a_min == min)
            how_many_more_needed--;
        if( a_max == max )
            how_many_more_needed--;

    // if( (n-m) >= how_many_more_needed )
    //  printf("Correct");
    // else
    //  printf("Incorrect");

        // cout << "a_min " << a_min << " a_max" << a_max << endl;

        if( (a_min < min) || (a_max > max) )
            printf("Incorrect");
        else if( (n-m) >= how_many_more_needed )
            printf("Correct");
        else
            printf("Incorrect");

    return 0;
}

#include <iostream>
#include <vector>
#include <string>
#include <stdio.h>
#include <stdint.h>
#include <string>
#include <algorithm>

using namespace std;

int main() {
	int n, m, recMin, recMax;
	cin >> n >> m >> recMin >> recMax;
	vector<int> mm;
	int foundMin = 100, foundMax = 0;
	int missing = n - m;

	for (int i = 0; i < m; i++) {
		int tmp;
		cin >> tmp;
		mm.push_back(tmp);
		foundMin = min(tmp, foundMin);
		foundMax = max(tmp, foundMax);
	}

	if (foundMax > recMax || foundMin < recMin) {
		cout << "Incorrect";
		return 0;
	}

	bool correct = false;

	if (foundMax == recMax) missing++;
	if (foundMin == recMin) missing++;

	if (missing > 1) correct = true;

	if (correct) cout << "Correct";
	else cout << "Incorrect";

	return 0;
}

#include <stdio.h>
#include <string.h>
int main()
{
    int min,m,n, max;
    bool f = true;
    int i, j, cou = 0;
    int mm[100];
    scanf("%d %d %d %d", &n, &m, &min, &max);
    for (i = 1; i <= m; i++)
    {
        scanf("%d", &mm[i]);
        if (mm[i] > max || mm[i] < min)
        {
            f = false;
        }
    }

    for (i = 1; i <= m; i++)
    {
        if (mm[i] == min || mm[i] == max)
        {
            ++cou;
        }
    }
    if (m - cou > (n - 2) || f == false)
    {

        printf("Incorrect\n");

    }
    else
    {
        printf("Correct\n");
    }

    return 0;
}

#include<stdio.h>

int main()
{
   int n,m,min,max;
   int ch1,ch2;
   while(scanf("%d %d %d %d",&n,&m,&min,&max)==4)
   {
      int k=0;
      ch1=0,ch2=0;
      for(int i=1;i<=m;i++)
      {
         int x;
         scanf("%d",&x);
         if(x==min)
            ch1=1;
         if(x==max)
            ch2=1;
         if(x>max || x<min)
            k=1;
      }
      int t=0;
      if(ch1)
         t++;
      if(ch2)
         t++;
      t+=(n-m);
      if(k)
         printf("Incorrect\n");
      else if(t>=2)
         printf("Correct\n");
      else
         printf("Incorrect\n");
   }
   return 0;
}

#include <iostream>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <string>
#include <bitset>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <sstream>
#include <fstream>
#include <tuple>
#include <set>
#include <functional>
#include <string.h>
//#include <assert.h>
//#include <typeinfo.h>
#include <time.h>

#define X first
#define Y second
#define MP make_pair
#define MT make_tuple
#define FOR(i, n) for(int (i) = 0; (i) < (n); (i)++)
#define REP(i, a, n) for(int (i) = (a); (i) < (n); (i)++)
typedef long long ll;
typedef std::pair<int, int> pii;
typedef std::pair<ll, ll > pll;
using namespace std;

const int INIT_SIZE_MAX = (1 << 29) + 10;
const int INIT_SIZE_MIN = -(1 << 29) - 10;
const int INIT_SIZE = 0;
const int MAX = 5;
const int ANS_SIZE = 100;
const double PI = 3.1415926535897932384;

template<class T, class U>
void convert(T &t, U &u){
    stringstream ss;
    ss << t;
    ss >> u;
}

int main(){
    int n, m, minc, maxc;
    cin >> n >> m >> minc >> maxc;

    map<int, bool> tb;
    tb[minc] = false;
    tb[maxc] = false;
    int limit = n - 2;
    bool f = true;
    FOR(i, m){
        bool ff = false;
        int t; cin >> t;

        if (minc > t || maxc < t){
            f = false;
            break;
        }

        if (t == minc && !tb[minc]){
            tb[minc] = true;
            continue;
        }
        if (t == maxc && !tb[maxc]){
            tb[maxc] = true;
            continue;
        }

        if (!tb.count(t)){
            tb[t] = true;
        }

        limit--;

        if (limit < 0){
            f = false;
            break;
        }
    }

    if (f){
        cout << "Correct" << endl;
    }
    else{
        cout << "Incorrect" << endl;
    }

    return 0;
}

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
	int n, m, Max, Min;
	cin >> n >> m >> Min >> Max;
	int *mas = new int [m];
	for (int i = 0; i < m; i++){
		cin >> mas[i];
	}

	bool isTrue = true;

	sort(&mas[0], &mas[m]);

	if (n - m == 1 && mas[0] != Min && mas[m - 1] != Max){
		isTrue = false;
	} else {
		for (int i = 0; i < m; i++){
			if (mas[i] < Min || mas[i] > Max){
				isTrue = false;
				break;
			}
		}

	}

	if (isTrue){
		cout << "Correct" << endl;
	} else {
		cout << "Incorrect" << endl;
	}
}

#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>

using namespace std;

int main(void){
	int n,m,min,max;
	scanf("%d %d %d %d\n",&n,&m,&min,&max);
	bool sol;
	vector<int> v;
	int k;
	v.assign(m,0);
	for (int i = 0; i < m; i++){
		scanf(" %d",&v[i]);
	}
	sort(v.begin(),v.end());
	int z = v.size()-1;
	if (n-m > 1){
		if ((min <= v[0])&&(v[z] <= max))  sol = true;
		else sol = false;
	} else {
		if ( ((min == v[0])&&(v[z] == max))
		||   ((min == v[0])&&(v[z] <= max))
		||   ((min <= v[0])&&(v[z] == max)) )
			sol = true;
		else sol = false;
	}
	if (sol) printf("Correct\n");
	else printf("Incorrect\n");
}

#include <iostream>
using namespace std;
int freq[101]={0};
int main() {
   int k,n,nn,min,max;
   cin>>n>>nn;
   cin>>min>>max;
   freq[min]=1;
   freq[max]=1;
   int sum=0,ssum=0;
   for(int i=0;i<nn;++i){
    cin>>k;
    if(k<min){
        cout<<"Incorrect";
        return 0;
    }
    if(k>max){
                cout<<"Incorrect";
                return 0;
    }
    if(k>=min&&k<=max){
        sum++;
    }
    if(k==max){ssum++;}
    if(k==min){ssum++;}
   }

   if(sum==nn&&nn+2-ssum<=n){
   cout<<"Correct";
   return 0;
   }
   cout<<"Incorrect";
    return 0;
}

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

#define int64 long long
#define sz(A) (int((A).size()))

using namespace std;

int main()
{
#ifdef shaoling
    freopen("input.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0);
    cin.tie(NULL);

    int n, m, best, worst;
    cin >> n >> m >> worst >> best;
    int g1 = 1, g2 = 1;

    for (int i = 0; i < m; i++)
    {
        int T;
        cin >> T;

        if (T < worst || T > best)
        {
            cout << "Incorrect\n";
            return 0;
        }

        if (T == worst)
            g1 = 0;
        if (T == best)
            g2 = 0;
    }

    if (g1 + g2 + m <= n)
        cout << "Correct\n";
    else
        cout << "Incorrect\n";
    return 0;
}

#pragma comment(linker, "/STACK:500000000")
#include <functional>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <sstream>
#include <ctype.h>
#include <stdio.h>
#include <bitset>
#include <vector>
#include <string>
#include <math.h>
#include <time.h>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
#define Int long long
#define inf 0x3f3f3f3f
#define eps 1e-9
using namespace std;

int main()
{
    int n, m, mm, minV = inf, maxV = -inf;
    int a, b;
    cin >> n >> m >> a >> b;
    mm = m;
    while(m--)
    {
        int val;
        cin >> val;
        minV = min(minV, val);
        maxV = max(maxV, val);
    }
    int cnt = (minV != a) + (maxV != b);
    if((minV >= a && maxV <= b) && cnt <= n - mm)
        puts("Correct");
    else
        puts("Incorrect");
}

#include<iostream>
#include<algorithm>
#include<math.h>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iomanip>
#include<map>
using namespace std;
typedef long long LL;
#define MAX(a,b) (a>b?a:b)
#define MIN(a,b) (a>b?b:a)
#define LINF (LL)(4e18)
#define INF (int)(1e9)

int main()
{
    int hash[105];
    memset(hash,0,sizeof(hash));
    int n,m,min,max;
    cin>>n>>m>>min>>max;
    int f=0;
    hash[max]=hash[min]=1;
    int s=0;
    if(max==min)
        s++;
    else
        s+=2;
    while(m--)
    {
        int t;
        cin>>t;
        if(t>max||t<min)
        {
                f=1;
        }
        else if(t!=max&&t!=min)
        {
            hash[t]=1;
            s++;
        }
    }
    if(f)
        cout<<"Incorrect"<<endl;
    else
    {
        int l,r;
        for(int i=0;i<=100;i++)
        {
            if(hash[i]==1)
            {
                l=i;
                break;
            }
        }
        for(int i=100;i>=0;i--)
        {
            if(hash[i]==1)
            {
                r=i;
                break;
            }
        }
        if(s>n)
        {
            cout<<"Incorrect"<<endl;
        }
        else
        if(l>=min||r<=max)
            cout<<"Correct"<<endl;
        else
            cout<<"Incorrect"<<endl;
    }
  //  system("pause");
    return 0;
}

#include<stdio.h>
int main()
{
	int n,m,min,max,i,k;
	bool flag1=0,flag2=0;
	scanf("%d%d%d%d",&n,&m,&min,&max);
	for(i=1;i<=m;i++)
	{
	scanf("%d",&k);
	if(k<min)
	{
	flag1=0;
	flag2=0;
	printf("Incorrect\n");
	return 0;
	}
	if(k>max)
	{
	flag1=0;
	flag2=0;
	printf("Incorrect\n");
	return 0;
	}
	if(k==min)
	flag1=1;
	if(k==max)
	flag2=1;
	}
	if(n-m<2 && flag1==0 && flag2==0)
	printf("Incorrect\n");
	else
	printf("Correct\n");
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
main(){
int n,m,ma,mi;
cin>>n>>m>>mi>>ma;
int a[m];
for(int i=0;i<m;i++){
    cin>>a[i];
}
if(n-m==1){
    int res=0;
    for(int i=0;i<m;i++){
        if(a[i]>=mi && a[i]<=ma){
            if(a[i]==mi || a[i]==ma){
                res++;
            }
        }else{
            cout<<"Incorrect";
            return 0;
        }
    }
    if(res==0){
        cout<<"Incorrect";
        return 0;
    }else{
        cout<<"Correct";
        return 0;
    }
}
for(int i=0;i<m;i++){
    if(a[i]>ma || a[i]<mi){
        cout<<"Incorrect";
        return 0;
    }
}
cout<<"Correct";
}

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string.h>
#include <strings.h>
#include <string>
#include <algorithm>
#include <vector>
#include <set>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <math.h>
#include <cmath>
#include <map>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <functional>
#include <numeric>
#include <utility>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <climits>
#include <unordered_set>
#include <unordered_map>

using namespace std;

typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> ii;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> int2;
typedef pair<float, float> float2;
typedef pair<ull, ull> ull2;

#define sz(a) int((a).size())
#define pb push_back
#define all(c) (c).begin(),(c).end()
#define tr(s,i) for ( __typeof((s).begin()) i = ((s).begin())   ; i != (s).end(); ++i)
#define present(c,x) ((c).find(x) != (c).end())
#define cpresent(c,x) (find(all(c),x) != (c).end())
#define mp(a,b) make_pair(a,b)
#define del(s,x) if(s.find(x)!=s.end()) s.erase(s.find(x))

#define FOR(i,a,b) for(int i=int(a); i<int(b); ++i)

bool comp(pair<int,int> a,pair<int,int> b) {return a.first < b.first; }

int main() {
  int n, m, tmp, mini, maxi;
  bool ok = true;
  bool okmini = false, okmaxi = false;
  cin >> n >> m >> mini >> maxi;
  FOR(i,0,m) {
    cin >> tmp;
    if ((tmp < mini) || (tmp > maxi))
      ok = false;
    if (tmp == mini)
      okmini = true;
    if (tmp == maxi)
      okmaxi = true;
  }
  if (n - m == 0) {
    if (ok && okmini && okmaxi)
      cout << "Correct" << endl;
    else
      cout << "Incorrect" << endl;
  }
  else if (n - m == 1) {
    if (ok && (okmini || okmaxi))
    cout << "Correct" << endl;
    else
      cout << "Incorrect" << endl;
  }
  else {
    if (ok)
      cout << "Correct" << endl;
    else
      cout << "Incorrect" << endl;
  }
  return 0;
}

#include <bits/stdc++.h>
#define fo(i,x,y) for (int i = x; i < y; i++)
#define fd(i,x,y) for(int i = x; i>= y; i--)
#define ll long long
#define clr(A,x) memset(A, x, sizeof A)
#define pb push_back
#define mod 1000000007
#define debug(x) cout <<#x << " = " << x << endl
using namespace std;
int main()
{
    //freopen("D:\input.txt","r",stdin);
    int n,m,mini,maxi;
    scanf("%d%d%d%d",&n,&m,&mini,&maxi);
    vector<int> ar(m);
    map<int,int> cnt;
    fo(i,0,m)
    {
        scanf("%d",&ar[i]);
        cnt[ar[i]]++;
    }
    sort(ar.begin(),ar.end());
    if(cnt[mini]>0 & cnt[maxi]>0 & mini<=ar[0] & maxi>=ar[m-1])
    {
        printf("Correct\n");
    }
    else if(n-m>=2 & mini<=ar[0] & maxi>=ar[m-1])
    {
        printf("Correct\n");
    }
    else if(n-m==1)
    {
        if((cnt[mini]>0 & maxi>=ar[m-1]  & mini<=ar[0]) | (cnt[maxi]>0 & maxi>=ar[m-1] & mini<=ar[0] ) )
        {
            printf("Correct\n");
        }
        else
        {
            printf("Incorrect\n");
        }
    }
    else
    {
        printf("Incorrect\n");
    }
}

#include <iostream>
#include <cstdio>
#include <vector>
#include <hash_set>
#include <string>
#include <algorithm>
#include <deque>
#include <hash_map>
#include <deque>
#include <queue>
#include <cstdlib>

using namespace std;

const int INF = 1000*1000*1000;
const int MAXN = 100500;
const double eps = 1e-8;
int t;
int n,m,min1,max1,min2=101,max2;
int main(){
	cin>>n>>m>>min1>>max1;
//if(n<2) {cout<<"Incorrect"; return 0;}
	int f=0,h=0;
	for(int i=0;i<m;i++){
		cin>>t;
		if(t<min2)min2=t;
		if(t>max2) max2=t;
		if(t==min1) f=1;
		if(t==max1) h=1;
	}
	if(min2<min1 || max2>max1){cout<<"Incorrect";} else

	if(min1==max1 && !f && n-m>=1){cout<<"Correct";}
	else
	if(f&&h){cout<<"Correct";}
	else
		if(f&&!h && n-m>0){cout<<"Correct";}
		else
			if(!f&&h && n-m>0){cout<<"Correct";}
			else
			if(!f&&!h && n-m>1){cout<<"Correct";}
			else
				{cout<<"Incorrect";}

}

#include <iostream>
using namespace std;
//Haha TTpro
//http://codeforces.com/problemset/problem/413/A
bool checked(int n, int m, int min, int max, int *A);
int main()
{
	int n, m, min, max;
	cin >> n >> m;
	cin >> min >> max;

	int *A;
	A = new int[m];
	for (int i = 0; i < m; i++)
	{
		cin >> A[i];
	}

	if (checked(n, m, min, max, A))
	{
		cout << "Correct\n";
	}
	else
	{
		cout << "Incorrect\n";
	}

}

bool checked(int n,int m,int min,int max,int *A)
{
	int i;
	bool cmin = false;
	bool cmax = false;
	for (i = 0; i < m; i++)
	{
		if (A[i] < min) return false;
		if (A[i] > max) return false;
		if (A[i] == min) cmin = true;
		if (A[i] == max) cmax = true;
	}
	int remainslot = n - m;
	if ((!cmin) && (remainslot>0))
	{
		cmin = true;
		remainslot--;
	}
	if ((!cmax) && (remainslot>0))
	{
		cmax = true;
		remainslot--;
	}
	if ((cmin) && (cmax)) return true;
	return false;
}

/*

A. Data Recovery
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Not so long ago company R2 bought company R1 and consequently, all its developments in the field of multicore processors. Now the R2 laboratory is testing one of the R1 processors.

The testing goes in n steps, at each step the processor gets some instructions, and then its temperature is measured. The head engineer in R2 is keeping a report record on the work of the processor: he writes down the minimum and the maximum measured temperature in his notebook. His assistant had to write down all temperatures into his notebook, but (for unknown reasons) he recorded only m.

The next day, the engineer's assistant filed in a report with all the m temperatures. However, the chief engineer doubts that the assistant wrote down everything correctly (naturally, the chief engineer doesn't doubt his notes). So he asked you to help him. Given numbers n, m, min, max and the list of m temperatures determine whether you can upgrade the set of m temperatures to the set of n temperatures (that is add n - m temperatures), so that the minimum temperature was min and the maximum one was max.
Input

The first line contains four integers n, m, min, max (1 ≤ m < n ≤ 100; 1 ≤ min < max ≤ 100). The second line contains m space-separated integers ti (1 ≤ ti ≤ 100) — the temperatures reported by the assistant.

Note, that the reported temperatures, and the temperatures you want to add can contain equal temperatures.
Output

If the data is consistent, print 'Correct' (without the quotes). Otherwise, print 'Incorrect' (without the quotes).
Sample test(s)
Input

2 1 1 2
1

Output

Correct

Input

3 1 1 3
2

Output

Correct

Input

2 1 1 3
2

Output

Incorrect

Note

In the first test sample one of the possible initial configurations of temperatures is [1, 2].

In the second test sample one of the possible initial configurations of temperatures is [2, 1, 3].

In the third test sample it is impossible to add one temperature to obtain the minimum equal to 1 and the maximum equal to 3.

*/

#include <bits/stdc++.h>
using namespace std;

#define oo (1LL<<30)
#define SZ(x) ((int)x.size())
#define valid(x,u) (x>=0 && x<u)

int di [] = {0, 0, 1, -1, 1, 1, -1, -1};
int dj [] = {1, -1, 0, 0, 1, -1, 1, -1};

int vis[105];

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n, m, mn, mx, a;
    cin >> n >> m >> mn >> mx;

    for(int i=0; i<m; i++) {
        cin >> a;
        if(a < mn || a > mx) {
            cout << "Incorrect";
            return 0;
        }
        vis[a] = 1;
    }

    if(vis[mn] + vis[mx] + n - m >= 2) {
        cout << "Correct";
        return 0;
    }

    cout << "Incorrect" << endl;

    return 0;
}

#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;

int main()
{//freopen("i.txt","r",stdin);
int n,m,mi,ma;cin>>n>>m>>mi>>ma;
int t1=1000,t2=-10000;
for (int i=1;i<=m;i++)
   {int a; cin>>a; t1=min(a,t1); t2=max(a,t2);}
if (t1<mi||t2>ma) {cout <<"Incorrect"<< endl; return 0;}
if ((t1==mi)+(t2==ma)+(n-m)>1)
  cout <<"Correct"<< endl;
  else cout <<"Incorrect"<< endl;
return 0;
}

#include <bits/stdc++.h>
using namespace std;
typedef  long long ll;
//double pi=3.1415926535898;
//double pi=acos(-1.0);
#define scarr(a,s,e) for(int i=s;i<=int(e);i++) scanf("%d ",&a[i]);
#define prarr(a,s,e) for(int i=s;i<=int(e);i++) printf("%d ",a[i]);
#define speed      ios::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);
#define rng(i,a,b) for(int i=a;i>=int(b);i--)
#define rep(i,a,b) for(int i=a;i<=int(b);++i)
#define lop(i,n)   for(int i=0;i<int(n);i++)
#define ms(x,a)    memset(x,a,sizeof(x))
#define all(x)     (x).begin(),(x).end()
#define sz(x)      int(x.size())
#define pb         push_back
//#define mp         make_pair
#define ff         first
//#define ss         second
#define sc(x)      scanf("%d",&x)
#define pr(x)      printf("%d ",x)
#define scl(x)     scanf("%lld",&x)
#define prl(x)     printf("%lld ",x)
#define prln(x)    printf("%d\n",x)
#define r0         return 0;
#define CC         continue;
#define scd(x)     scanf("%lf",&x)
#define prd(x) printf("%.10f\n",x);
#define bb(x)    cerr<< x <<endl;
//#define max(a,b) a<b?b:a
//#define min(a,b) a<b?a:b
const ll M   = 1e7+9 ;
const ll inf = 1e19  ;
const int si = 1e5+9 ;
int n,m,mx,mn,t;
bool bmx,bmn;
int main()
{
    cin>>n>>m>>mn>>mx;
    lop(i,m)
    {
        cin>>t;
        if(t<mn||t>mx)
        {
            cout<<"Incorrect";
            r0;
        }
        if(t==mn)
            bmn=1;
        if(t==mx)
            bmx=1;
    }
    int need = (!bmn) + (!bmx) ;
    if (n-m >= need)
    {
        cout<<"Correct";
    }
    else
        cout<<"Incorrect";
    r0;
}

/*

ll pwmod(ll a, ll n, ll mod) {
    ll ret = 1;
    while (n) {
        if (n & 1) ret = ret * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return ret;
}
*/
/*
freopen("output.txt","w",stdout);
freopen("input.txt","r",stdin);
for (int i=0;i<n;i++)            Hi    ^_^  hack me if you can :P
*/

#include<bits/stdc++.h>
#include <stdio.h>
#include <algorithm>
#define LL long long
#define pb push_back
#define mp make_pair
#define F first
#define S second
const int N=1e6;
const double PI=3.14;

using namespace std;

int n,m,ma,mi,a,b,k,sum;

int main(){
    cin>>n>>m>>mi>>ma;
    for (int i=0;i<m;i++){
        int x;
        cin>>x;
        if (x>mi&&x<ma) a++;
		if (x<mi || x>ma) b++;
	}
	if (a+2<=n && !b) cout<<"Correct"<<endl;
	else cout<<"Incorrect"<<endl;
    return 0;
}

#include <iostream>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <map>
#include<string>
#include <cstring>
#include <cstdlib>
#define pi acos(-1.0)
using namespace std;

int main()
{
    int n,m,min,max;
    int a[200];
    while(cin>>n>>m>>min>>max)
    {
        int count=0,flag=0,F=0,ok=1;
        for(int i=0;i<m; i++)
        {
            cin>>a[i];
            if(a[i]>max||a[i]<min)
                ok=0;
        }
        for(int j=0;j<m+2;j++)
        {
            if(a[j]==max)
            {
                flag=1;
            }
            if(a[j]==min)
                F = 1;
            if(a[j]<max&&a[j]>min)
            {
                count++;
            }
        }
        if((count+2-F-flag)<=n&&ok)
        {
            printf("Correct\n");
        }
        else
            printf("Incorrect\n");
    }
    return 0;
}

//A. Data Recovery

#include<bits/stdc++.h>
using namespace std;
int main ()
{
	int n,m,min,max;
	int t[101];

 	cin>>n>>m>>min>>max;
    for(int i=0;i<m;i++)
	{
    	cin>>t[i];
    }

    int x=n-m;
 	sort(t,t+m);
 	if(t[m-1]!=max) x--;
 	if(t[0]!=min) x--;

	if(x>=0 && min<=t[0] && t[m-1]<=max)   cout<<"Correct";
 	else   cout<<"Incorrect";
 	return 0;
}

#include <stdio.h>
#include <stdlib.h>

#include <iostream>

#include <string>
#include <vector>

using namespace std;

int n, m;
int mit, mat;
vector<int> x;

int main()
{
	int res =2;
	bool mitok =false;
	bool matok =false;
	bool inc =false;

	cin >> n >> m >> mit >> mat;
	x.resize( m );
	for( int i=0; i<m; ++i )
	{
		cin >> x[i];
		if ( x[i]==mit && !mitok ){ --res; mitok =true; }
		if ( x[i]==mat && !matok ){ --res; matok =true; }
		if ( x[i]>mat || x[i]<mit ) inc=true;
	}

	if ( n-m>=res && !inc ) cout << "Correct";
	else cout << "Incorrect";
	cout << endl;

	return 0;
}

#include <bits/stdc++.h>
#define ll long long
#define R return
#define B break
#define C continue
#define sf scanf
#define pf printf
#define pb push_back
#define F first
#define S second

using namespace std;

int b,n,m,mn,mx,a[1000],sum;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin>>n>>m>>mn>>mx;

    for(int i=0;i<m;i++){
        cin>>a[i];
        if(a[i]!=mn&&a[i]!=mx)sum++;
        if(a[i]>mx||a[i]<mn){
            b=1;
        }
    }
    if(b){
        puts("Incorrect");
        R 0;
    }
    if(sum>n-2){
        puts("Incorrect");
        R 0;
    }
    puts("Correct");

    return 0;
}

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <algorithm>
#include <utility>
#include <sstream>
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <climits>
#include <time.h>
#include <math.h>
#define all(c) (c).begin(),(c).end()
#define tr(c,i) for(typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
#define ll long long
#define sz(a) int((a).size())
#define pb push_back
#define SORT(x) sort((x).begin(),(x).end());
#define VI vector<int>
#define VII vector < vector <int> >
#define MP make_pair
#define SET(x,byte) memset(x,byte,sizeof(x));
#define I(x) ((x) - 'A')
#define REP(i,mx) for(int i=0;(i)<(mx);i++)
#define FOR(i,mn,mx) for(int i=mn;(i)<=(mx);i++)
#define U(x) (1<<(x))
#define INF 1000000000
#define PI acos(-1.0)
#define endl '\n'

using namespace std;

int main() {
    int n,m,mn,mx,temp,ls=INF,grd=0;
    cin>>n>>m>>mn>>mx;
    REP(i,m) {
        cin>>temp;
        ls = min(ls, temp);
        grd = max(grd, temp);
    }
    if(mn > ls || mx < grd) {
        cout<<"Incorrect\n";
        return 0;
    }

    int cnt = 0;
    if(mn != ls) cnt++;
    if(mx != grd) cnt++;
    cout<<((n-m) >= cnt ? "Correct" : "Incorrect")<<endl;
    return 0;
}

#include <vector>
#include <queue>
#include <map>
#include <list>
#include <cmath>
#include <utility>
#include <queue>
#include <algorithm>
#include <limits>
#include <set>
#include <iostream>
#include <string>
using namespace std;

int main()
  {
  int n,m,mn,mx;
  cin >> n >> m >> mn >> mx;
  vector<int> A(m);
  for(int i=0;i<m;++i)
    cin >> A[i];

  sort(A.begin(),A.end());

  if (A[0]<mn || A.back()>mx) cout << "Incorrect"; else
    if (A[0]==mn || A.back()==mx) cout << "Correct"; else
      if (n-m>=2) cout << "Correct"; else cout << "Incorrect";

  return 0;
  }

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n, m, min, max, ind1=1, ind2=1;
    cin>>n>>m>>min>>max;
    int x;
    while(cin>>x){
        if(x>max|| x<min){
            cout<<"Incorrect";
            return 0;
        }
           else if(x==min)
            ind1=0;
             else if(x==max)
             ind2=0;
        }
        if(m+ind1+ind2>n)
        cout<<"Incorrect";
        else
        cout<<"Correct";
        return 0;

}

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <limits.h>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
typedef pair<int,int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
#define DEBUG(x) cout << ">>> " << #x << " : " << x << endl;
#define MP make_pair
#define PB push_back
#define REP(i,b) for ( int i = 0; i < int(b); ++i )
#define FOR(i,a,b) for ( int i = int(a); i <= int(b); ++i )
#define FORD(i,a,b) for ( int i = int(a); i >= int(b); --i )
#define RI(a) scanf("%d", &a)
#define RII(a,b) scanf("%d%d", &a, &b)
#define RIII(a,b,c) scanf("%d%d%d", &a, &b, &c)
#define RIIII(a,b,c,d) scanf("%d%d%d%d", &a, &b, &c, &d)
const int INF = 1<<29;
typedef long long ll;

int main( ) {
  int n, m, min, max, x;
  bool maxHit = 0, minHit = 0;
  RIIII( n, m, min, max );
  REP( i, m ) {
    RI( x );
    if ( x < min || x > max ) {
      printf("Incorrect\n");
      return 0;
    }
    if ( x == min )
      minHit = 1;
    if ( x == max )
      maxHit = 1;
  }
  if ( n - m == 1 && !minHit && !maxHit )
    printf("Incorrect\n");
  else
    printf("Correct\n");

  return 0;
}

#include <iostream>

int main(){
	int n, m, min, max;
	std::cin >> n >> m >> min >> max;
	int minTemp = 0;
	int maxTemp = 0;

	for (int i = 0; i < m; i++){
		int input;
		std::cin >> input;

		if(input < min || input > max){
			std::cout << "Incorrect"<< std::endl;
			exit(0);
		}
		if(input == min) minTemp = 1;
		if(input == max) maxTemp = 1;
	}

	if(n - m >= 2){
		std::cout << "Correct" << std::endl;
		exit(0);
	}
	if(minTemp && maxTemp){
		std::cout << "Correct" << std::endl;
		exit(0);
	}
	if((minTemp || maxTemp) && n - m == 1){
		std::cout << "Correct"<< std::endl;
		exit(0);
	}

	std::cout << "Incorrect" << std::endl;

	return 0;
}

#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <cctype>
#include <vector>
using namespace std;
const int N = 100005;
int n , m , mn , mx;
int main () {
#ifndef ONLINE_JUDGE
    freopen ("input.txt" , "r" , stdin);
#endif
    cin >> n >> m >> mn >> mx;
    int a = 101 , b = -1;
    for (int i = 0 ; i < m ; i ++) {
        int k;cin >> k;
        a = min (a , k);
        b = max (b , k);
    }
    if (a < mn || b > mx) {
        puts ("Incorrect");
        return 0;
    }
    if (a == mn && b == mx) puts ("Correct");
    else if ((a == mn || b == mx) && n - m) puts ("Correct");
    else if ((n - m) >= 2) puts ("Correct");
    else puts ("Incorrect");
    return 0;
}

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <cmath>
#define f(i,x,n) for(int i = x;i < n;i++)
#define ll long long int
#define co(x)  cout << x << endl;
#define ci(x) cin >> x;
#define p(x) printf("%d\n",x);
#define s(x) scanf("%d",&x);
#define e() cout << endl;
#define MAX_INT INT;
#define cp(x,y) cout << "Case : " << x << " " << y << endl;
using namespace std;
int main()
{
	int m,n,mi,ma;
	cin >> m >> n >> mi >> ma;
	std::vector<int> v(n);
	map <int,bool> mp;
	for(int i = 0;i < n;i++)
	{
		cin >> v[i];
		mp[v[i]] = true;
		if(v[i] > ma)
		{
			cout << "Incorrect\n";
			return 0;
		}
		if(v[i] < mi)
		{
			cout << "Incorrect\n";
			return 0;
		}
	}

	int cnt = !mp[mi] + !mp[ma];
	if(m - n < cnt)
		cout << "Incorrect\n";

	else
		cout << "Correct\n";
}//hello

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
int main()
{
    int n,m,min,max;
    int mm[110],t[110];
    while(scanf("%d%d%d%d",&n,&m,&min,&max)!=EOF)
    {
        int tot=0,i,flag=0;
        bool vis[110];
        memset(vis,0,sizeof(vis));
        vis[min]=1;vis[max]=1;tot=2;
        for(i=0;i<m;i++)
        {
            scanf("%d",&mm[i]);
            if(mm[i]>max||mm[i]<min)
                flag=1;
            if(vis[mm[i]]==0)
            {
                   tot++;
                   vis[mm[i]]=1;
            }
        }
        if(flag||tot>n)
        {
           puts("Incorrect");  continue;
        }
        int ok=0;
        if(m==n-1)
        {
           for(i=0;i<m;i++)
               if(mm[i]==max||mm[i]==min)
               {
                   ok=1; break;
               }

           if(ok==0)
              puts("Incorrect");
           else puts("Correct");
        }
        else
            puts("Correct");
    }
    return 0;
}

#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <string>
#include <cstring>
#include <ctype.h>

using namespace std;

#define print(a) cout<< a <<endl
#define print2(a,b) cout<< a <<" "<< b <<endl
#define print3(a,b,c) cout<< a <<" "<< b <<" "<< c <<endl
#define pb push_back
#define popb pop_back
#define mem(name, x) memset(name, x, sizeof(name))
#define rep(i,n) for(i=0;i<(int)(n);i++)
#define rep2(i,n) for(i=1; i<=(int)(n); i++)
#define SZ(x) (int)x.size()
#define PI (2*acos(0))
#define ERR 1e-7
#define EQ(a,b)(fabs(a-b)<ERR)
#define lookalike scanf("%*d")
#define fst first
#define snd second
#define PQ priority_queue
#define LOG(x,BASE) (log10(x)/log10(BASE))
#define INFI 1<<30
#define makep(x, y) make_pair(x, y)
#define LOJ(a, b) printf("Case %d: %d\n", a, b)
#define popcount __builtin_popcount
#define All(a) (a.begin(), b.end())
#define FOREACH(it,x) for(__typeof((x).begin()) it=(x.begin()); it!=(x).end(); ++it)
#define Reverse(x) reverse(x.begin(),x.end())

typedef unsigned long long ULL;
typedef long long ll;
typedef pair<int,int> paii;
typedef pair<int, string> pais;

template<class T> inline T lcm(T a,T b)
{if(a<0)return lcm(-a,b);if(b<0)return lcm(a,-b);return a*(b/(gcd(a,b)));}
template<class T> inline T gcd(T a,T b)
{if(a<0)return gcd(-a,b);if(b<0)return gcd(a,-b);return (b==0)?a:gcd(b,a%b);}

template<class T1> void deb(T1 e){cout<<e<<endl;}
template<class T1,class T2> void deb(T1 e1,T2 e2){cout<<e1<<" "<<e2<<endl;}
template<class T1,class T2,class T3> void deb(T1 e1,T2 e2,T3 e3){cout<<e1<<" "<<e2<<" "<<e3<<endl;}
template<class T1,class T2,class T3,class T4> void deb(T1 e1,T2 e2,T3 e3,T4 e4){cout<<e1<<" "<<e2<<" "<<e3<<" "<<e4<<endl;}
template<class T1,class T2,class T3,class T4,class T5> void deb(T1 e1,T2 e2,T3 e3,T4 e4,T5 e5){cout<<e1<<" "<<e2<<" "<<e3<<" "<<e4<<" "<<e5<<endl;}
template<class T1,class T2,class T3,class T4,class T5,class T6> void deb(T1 e1,T2 e2,T3 e3,T4 e4,T5 e5,T6 e6){cout<<e1<<" "<<e2<<" "<<e3<<" "<<e4<<" "<<e5<<" "<<e6<<endl;}

int bigmod(ll b, ll p, ll m){ ll r=1;while(p>0){if(p%2==1)r=(r * b ) % m;p/=2;b = ( b * b) % m;}return r; }

void BINARY(int n){cout<<"Mask: ";for(int i=10;i>=0;i--) if(n&(1<<i))cout<<1;else cout<<0;cout<<endl;}

///int rrr[]={1,0,-1,0};int ccc[]={0,1,0,-1}; //4 Direction
///int rrr[]={1,1,0,-1,-1,-1,0,1};int ccc[]={0,1,1,1,0,-1,-1,-1};//8 direction
///int rrr[]={2,1,-1,-2,-2,-1,1,2};int ccc[]={1,2,2,1,-1,-2,-2,-1};//Knight Direction
///int rrr[]={2,1,-1,-2,-1,1};int ccc[]={0,1,1,0,-1,-1}; //Hexagonal Direction
///int month[]={31,28,31,30,31,30,31,31,30,31,30,31}; //month

#define MAX 150

int arr[MAX];

int main()
{
    mem(arr, 0);
    bool flag = false;
    int i, n, m, a, mini, maxi;
    cin >> n >> m >> mini >> maxi;
//    arr[mini] = arr[maxi] = 1;
    for(i=0; i<m; i++)
    {
        cin >> a;
        if(a>maxi or a<mini) flag = true;
        arr[a]++;
    }
    int cnt = 0;
    if(!arr[mini])arr[mini] = 1; if(!arr[maxi]) arr[maxi] = 1;
    for(i=0; i<MAX; i++)
    {
        if(arr[i]) cnt+=arr[i];
    }
    if(cnt>n) flag = true;
    if(flag) cout <<"Incorrect"<<endl;
    else cout <<"Correct"<<endl;
    return 0;
}

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    int n,m,minn,maxx; cin >> n >> m >> minn >> maxx;
    vector<int> ms;
    for(int i = 0; i < m; i++){
        int in; cin >> in;
        ms.push_back(in);
    }

    sort(ms.begin(), ms.end());
    int need = 0;
    if(ms[0] < minn || ms[ms.size()-1] > maxx){
        cout << "Incorrect";
        return 0;
    }
    if(ms[0] != minn){
        need++;
    }
    if(ms[ms.size()-1] != maxx){
        need++;
    }

    if(m+need > n){
        cout << "Incorrect";

    }
    else{
        cout << "Correct";
    }

    return 0;

}

#include <set>
#include <map>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <sstream>
#include <iomanip>
#include <complex>
#include <iostream>
#include <algorithm>

#include <ctime>
#include <deque>
#include <bitset>
#include <cctype>
#include <utility>
#include <cassert>
using namespace std;

#define FOR(i,a,b) for(int i=(a),_b=(b); i<=_b; i++)
#define FORD(i,a,b) for(int i=(a),_b=(b); i>=_b; i--)
#define REP(i,a) for(int i=0,_a=(a); i<_a; i++)
#define EACH(it,a) for(__typeof(a.begin()) it = a.begin(); it != a.end(); ++it)
#define SZ(S) ((int) ((S).size()))

#define DEBUG(x) { cout << #x << " = " << x << endl; }
#define PR(a,n) { cout << #a << " = "; FOR(_,1,n) cout << a[_] << ' '; cout << endl; }
#define PR0(a,n) { cout << #a << " = "; REP(_,n) cout << a[_] << ' '; cout << endl; }

int n, m, nn, ln, a[111];

bool solve() {
    if (*min_element(a+1, a+m+1) < nn) return false;
    if (*max_element(a+1, a+m+1) > ln) return false;

    if (*min_element(a+1, a+m+1) > nn) ++m;
    if (*max_element(a+1, a+m+1) < ln) ++m;

    return m <= n;
}

int main() {
    ios :: sync_with_stdio(false); cin.tie(NULL);
    cout << (fixed) << setprecision(6);
    while (cin >> n >> m >> nn >> ln) {
        FOR(i,1,m) cin >> a[i];
        if (solve()) cout << "Correct"; else cout << "Incorrect"; cout << endl;
    }
    return 0;
}

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    bool x = false ;
    int n , m , mi , mx , mii = 1000 , mxx = -1 ;
    cin >> n >> m >> mi >> mx ;
    int a[m] ;
    for (int i = 0 ; i < m ; i++)
    {
        cin >> a[i] ;
        if (mii > a[i])
            mii = a[i] ;
        if (mxx < a[i])
            mxx = a[i] ;
        if (a[i] > mx || a[i] < mi)
            x = true ;
    }
    if (x)
    {
        cout << "Incorrect" ;
        return 0 ;
    }
    else
    {
        if (mi == mii && mx == mii)
        {
            cout << "Correct" ;
        }
        else
        {
            if (n - m > 1)
            {
                cout << "Correct" ;
            }
            else
            {
                if (mi == mii || mx == mxx)
                {
                    cout << "Correct" ;
                }
                else
                {
                    cout << "Incorrect" ;
                }
            }
        }
    }
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int a[105];
int main(){
    int n,m,max,min;
    scanf("%d%d%d%d",&n,&m,&min,&max);
    /* scanf("%d",&a[1]); */
    int i;
   /*  if(a[t]!=min){
        a[++t]=min;
    }
    if(a[t]!=max){
        a[++t]=max;
    } */
    //输入m个数据
    int minx=1,maxx=1;
    bool fq=false;
    for(i=1;i<=m;++i){
        scanf("%d",&a[i]);
        if(a[i]==min){
            minx=0;//已经有最小值
        }
        if(a[i]==max){
            maxx=0;//有最大值了
        }
        if(a[i]<min||a[i]>max){
            fq=true;
        }
    }
    if(m+minx+maxx>n||fq){
        cout<<"Incorrect"<<endl;
    }else{
        cout<<"Correct"<<endl;
    }
    return 0;
}//hello

#include <algorithm>
#include <cstdio>

using namespace std;

int a[105];

int main()
{
    //freopen("input", "r", stdin);
    //freopen("output", "w", stdout);
    int n, m, mins=1000, maxs=0, minx=1000, maxx=0, x, i;
    scanf("%d%d%d%d", &n, &m, &mins, &maxs);
    for(i=1;i<=m;i++)
    {
        scanf("%d", &x);
        minx=min(minx, x);
        maxx=max(maxx, x);
    }
    n-=m;
    if(minx>mins)
    {
        minx=mins;
        n--;
    }
    if(maxx<maxs)
    {
        maxx=maxs;
        n--;
    }
    if(n>=0&&minx==mins&&maxs==maxx) printf("Correct");
    else printf("Incorrect");
}

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;

int main(){
int n,m,mn,mx,d,count1 = 0 ,count2 = 0;
scanf("%d %d %d %d",&n,&m,&mn,&mx);

for (int i=0;i<m;i++){
 cin>>d;
 if (d > mn && d < mx)
    count1++;
 if (d < mn || d > mx)
 count2++;
}
if(count1+2<=n && count2<1)
    printf("Correct\n");
else
 printf("Incorrect\n");

return 0;
}

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define sc printf("Correct\n")
#define fl printf("Incorrect\n")

using namespace std;

int n,m,maxi,mini,mmax=0,mmin=101,t;

void reloc()
{
    freopen("/Users/admin/Desktop/cards.in","r",stdin);
    freopen("/Users/admin/Desktop/cards.out","w",stdout);
    return;
}

int main()
{
    //reloc();
    scanf("%d%d%d%d",&n,&m,&mini,&maxi);
    for(int i=1;i<=m;i++)
    {
        scanf("%d",&t);
        mmax=max(mmax,t);
        mmin=min(mmin,t);
    }
    if(mmax==maxi&&mmin==mini)sc;
    else if(mmax>maxi||mmin<mini)fl;
    else if(mmax==maxi||mmin==mini)
    {
        if(n!=m)sc;
        else fl;
    }
    else if(n-m>1)sc;
    else fl;
    return 0;
}

#include<iostream>
#include<stdio.h>
using namespace std;

int main()
{
    int n,m,min1,max1,c=0,k=0;
    cin>>n>>m>>min1>>max1;
    int a[m];
    for(int i=0;i<m;i++)
    {
        cin>>a[i];
        if(a[i]==min1 || a[i]==max1)
         c++;

        if(a[i]>max1 || a[i]<min1)
            k++;
    }
    if(k>0)
       printf("Incorrect\n");
    else
    if(c>=2 || (c>=1 && n-m>=1) || (c==0 && n-m>=2))
    {
        printf("Correct\n");
    }
    else
    printf("Incorrect\n");
}

//==================================
//==========   WARNING   ===========
//==================================
//===   Contains too many bugs   ===
//==================================
#include <deque>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <string>
#include <cmath>
#include <set>
#include <functional>
#include <queue>
#include <iomanip>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pr;
typedef pair<ll,ll> prl;

#define double long double
#define NAME ""

const ll mod7 = 1000000007;

int main()
{
    //freopen(NAME".in","r",stdin); freopen(NAME".out","w",stdout);
    //ios::sync_with_stdio(false);

    int n,m,Min,Max;
    cin >> n >> m >> Min >> Max;
    int M1,M2; M1 = M2 = 1;
    for(int i=0;i<m;++i)
    {
        int t;
        cin >> t;
        if(t==Min)M1 = 0;
        if(t==Max)M2 = 0;
        if(t<Min || t>Max)
        {
            cout << "Incorrect";
            return 0;
        }
    }
    cout << (n-m-M1-M2>=0?"Correct":"Incorrect");
    return 0;
}

#include <iostream>
using namespace std;
typedef long long int ll;

ll ans[100000];

int main()
{
	ll n,m,mx,mn,i,j,k,diff,flag=0,flag1=0,flag2=0;
	cin>>n>>m>>mn>>mx;
	ll arr[m+5];
	for(i=0;i<m;i++)
	{
	    cin>>arr[i];
	    if(arr[i]==mn)
	       flag1=1;
	    if(arr[i]==mx)
	       flag2=1;
	    if(arr[i]<mn || arr[i]>mx)
	       flag=1;
	}
	diff=n-m;
	if(flag==1)
	 cout<<"Incorrect"<<endl;
	else if(flag1==1 && flag2==1)
	   cout<<"Correct"<<endl;
	else if(flag1==1 && diff>=1 || flag2==1 && diff>=1)
	cout<<"Correct"<<endl;
	else if(flag1==0 && flag2==0 && diff>=2)
	cout<<"Correct"<<endl;
	else
	cout<<"Incorrect"<<endl;
return 0;
}

#include<iostream>
#include<vector>
#include<algorithm>
#include<stack>
#include<deque>
#include<queue>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<cstdio>
using namespace std;
long need,w,n,m,mi,ma,cur,a[100007];
bool nmi,nma;
int main()
{
   cin>>n>>m>>mi>>ma;
   for(cur=0;cur<m;cur++)
   {
       cin>>a[cur];
   }
   sort(a,a+m);
   need=n-m;
   if(a[0]<mi || a[m-1]>ma)
   {
       cout<<"Incorrect"<<endl;
       return 0;
   }
   if(a[0]!=mi && a[m-1]!=ma && need<2)
   {
       cout<<"Incorrect"<<endl;
       return 0;
   }
   if((a[0]!=mi || a[m-1]!=ma)&& need<1)
   {
       cout<<"Incorrect"<<endl;
       return 0;
   }
   cout<<"Correct"<<endl;

}

#include <iostream>

using namespace std;

int main() {
    int n, m, a0, b0, a1, b1, x;
    cin >> n >> m >> a0 >> b0 >> a1;
    b1 = a1;
    for (int i = 1; i < m; ++i) {
        cin >> x;
        if (x < a1) a1 = x;
        if (x > b1) b1 = x;
    }
    if (a1 >= a0 && b1 <= b0 && (n - m > 1 || a0 == a1 || b0 == b1)) {
        cout << "Correct\n";
    } else {
        cout << "Incorrect\n";
    }
    return 0;
}

#include <bits/stdc++.h>
#define F first
#define S second
#define ll long long
#define ld long double
#define pb push_back
#define sz size

using namespace std;

int n,m,k,mn,mx;

vector<int>v;

bool bmn,bmx;

int main()
{
    cin >> n >> m >> mn >> mx;
    k=n-m;
    for (int i=0;i<m;i++)
    {
        int x;
        cin >> x;
        v.pb(x);
    }
    if (*(max_element(v.begin(),v.end()))==mx)bmx=1;
    if (*(min_element(v.begin(),v.end()))==mn)bmn=1;
    if (bmx==0){v.pb(mx);k--;}
    if (bmn==0){v.pb(mn);k--;}
    if (*(max_element(v.begin(),v.end()))==mx&&*(min_element(v.begin(),v.end()))==mn&&k>=0)cout << "Correct\n";
    else cout << "Incorrect\n";
    return 0;
}

#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define ar array

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int n, m, mn, mx;
	cin >> n >> m >> mn >> mx;
	bool h0=0, h1=0, bad=0;
	for(int i=0; i<m; ++i) {
		int t;
		cin >> t;
		if(t==mn)
			h0=1;
		if(t<mn)
			bad=1;
		if(t>mx)
			bad=1;
		if(t==mx)
			h1=1;
	}
	if(bad) {
		cout << "Incorrect";
		return 0;
	}
	if(mn==mx&&m+1<=n) {
	cout << "Correct";
	return 0;}
	cout << (m+(!h0)+(!h1)<=n?"Correct":"Incorrect");
}

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int M = 100100;
bool prime[M];
void Seive(int n=M)
{
    memset(prime, true, sizeof(prime));
    for (int p=2; p*p<=n; p++)
    {
        if (prime[p] == true)  {
            for (int i=p*p; i<=n; i += p)
                prime[i] = false;
        }
    }
}
vector <int> v;
int main()
{
    int n, m, mi, ma;
    scanf("%d %d %d %d",&n,&m,&mi,&ma);
    int a;
    scanf("%d",&a);
    int mn=a;
    int mx=a;

    for (int i=1;i<m;++i){
        scanf("%d",&a);
        mn=min(mn,a);
        mx=max(mx,a);
    }

    int k= (mx==ma) + (mn==mi);
    if (mx>ma || mn<mi){
        puts("Incorrect");
    }
    else if (m+2-k <= n ){
         puts("Correct");
    }
    else
         puts("Incorrect");

}

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<list>
#include<cstring>
#include<string>
#include<vector>
#include <set>
#include <sstream>
#include <stack>
#include<bitset>
#include <iostream>
#include<algorithm>
#include<queue>
#include <cmath>
#include <map>
#include <limits>
#include <iomanip>
#include <assert.h>
using namespace std;
//
//#ifdef WIN32
//#include <windows.h>
//#else
//#include <termios.h>
//#include <unistd.h>
//#endif
//
//void SetStdinEcho(bool enable = true) {
//#ifdef WIN32
//	HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
//	DWORD mode;
//	GetConsoleMode(hStdin, &mode);
//
//	if (!enable)
//		mode &= ~ENABLE_ECHO_INPUT;
//	else
//		mode |= ENABLE_ECHO_INPUT;
//
//	SetConsoleMode(hStdin, mode);
//
//#else
//	struct termios tty;
//	tcgetattr(STDIN_FILENO, &tty);
//	if (!enable)
//		tty.c_lflag &= ~ECHO;
//	else
//		tty.c_lflag |= ECHO;
//
//	(void)tcsetattr(STDIN_FILENO, TCSANOW, &tty);
//#endif
//}

const double PI = 3.141592653589793238463;
#define DEBUG(x) cout << '>' << #x << ':' << x << endl;
#define REP(i,n) for(int i=0;i<(n);i++)
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define FORD(i,a,b) for(int i=(a);i>=(b);i--)
inline bool EQ(double a, double b) { return fabs(a - b) < 1e-9; }
const long long INF = 1 << 30;
typedef unsigned long long ull;
inline int two(int n) { return 1 << n; }
inline int test(int n, int b) { return (n >> b) & 1; }
inline void set_bit(int & n, int b) { n |= two(b); }
inline void unset_bit(int & n, int b) { n &= ~two(b); }
inline int last_bit(int n) { return n & (-n); }
inline int ones(int n) { int res = 0; while (n && ++res) n -= n&(-n); return res; }
template<class T> void chmax(T & a, const T & b) { a = max(a, b); }
template<class T> void chmin(T & a, const T & b) { a = min(a, b); }

int n, m, mini, maxi;
void cf1245()
{
	cin >> n >> m >> mini >> maxi;
	int needed = 2;
	bool flag = 0;
	REP(i, m)
	{
		int tmp; cin >> tmp;
		if (tmp == mini || tmp == maxi)
			needed--;
		if (tmp > maxi || tmp < mini)
		{
			flag = 1;
			break;
		}
	}
	if ((n - m) < needed || flag)
		cout << "Incorrect" << endl;
	else
		cout << "Correct" << endl;
}

int main()
{
	cf1245();
//	system("pause");
}

#include<bits/stdc++.h>
using namespace std;
#define lp(i,n) for(int i=0;i<(int)(n);i++)
int main(){
    int n,m,mn,mx;
    cin>>n>>m>>mn>>mx;
    int mmn,mmx;
    cin>>mmn;
    mmx=mmn;
    int x;
    lp(i,m-1){
        cin>>x;
        mmn=min(mmn,x);
        mmx=max(mmx,x);
    }
    if(mn>mmn || mx<mmx) return !printf("Incorrect\n");
    if(n-m-((mn!=mmn)+(mx!=mmx) )>=0)
        return !printf("Correct\n");
    else return !printf("Incorrect\n");
}

#include<bits/stdc++.h>
using namespace std;
long long n,m,mn,mx,l,t,mn2=INT_MAX,mx2=INT_MIN;
set<long long>q;
main(){
	cin>>n>>m>>mn>>mx;
	long long a[m];
	for(int i=0;i<m;i++){
		cin>>a[i];
		if(a[i]<mn2)mn2=a[i];
		if(a[i]>mx2)mx2=a[i];
		if(a[i]>=mn&& a[i]<=mx)t++;
	}
	if(t==m && m<=n){
		if(mn2!=mn && mx2!=mx && t+2<=n)cout<<"Correct";
		else if((mn2==mn && t+1<=n)||(mx2==mx && t+1<=n))cout<<"Correct";
		else if(mn2==mn && mx2==mx && t<=n)cout<<"Correct";
		else cout<<"Incorrect";
	}
	else cout<<"Incorrect";
}

//hellobig_tq

#include <bits/stdc++.h>
#define ull unsigned long long int
#define ll long long int
#define P pair
#define PLL pair<long long, long long>
#define PII pair<int, int>
#define PUU pair<unsigned long long int, unsigned long long int>
#define L list
#define V vector
#define S set
#define MS multiset
#define M map
#define mp make_pair
#define pb push_back
#define MM multimap
#define IT iterator
#define RIT reverse_iterator
#define FAST ios_base::sync_with_stdio(false);cin.tie();cout.tie();

using namespace std;

int main(){
    int n,m,min,max;
    cin >> n >> m >> min >> max;
    int a = 0; int b = 0;
    int pos = true;
    for(int i = 0; i < m; ++i){
        int c;
        cin >> c;
        if(c==min)a=1;
        if(c==max)b=1;
        if(c < min)pos = false;
        if(c > max)pos = false;
    }
    if(n-m == 0){
        if(a && b && pos)cout << "Correct";
        else cout << "Incorrect";
    }else if(n-m == 1){
        if((a || b) && pos)cout << "Correct";
        else cout << "Incorrect";
    }else if(pos){
        cout << "Correct";
    }else{
        cout << "Incorrect";
    }
    return 0;
}

#include <iostream>

using namespace std;

int main()
{
  int n, m,  min, max;
  cin >> n >> m >> min >> max;

  int assistantTemps[m];

  for(int i = 0; i < m; i++)
  {
    cin >> assistantTemps[i];

    if(assistantTemps[i] > max || assistantTemps[i] < min)
    {
      cout << "Incorrect" << endl;
      return 0;
    }
  }

  int missingTemps = n - m;
  int tempRange = 2;

  for(int i = 0; i < m; i++)
  {
    if(assistantTemps[i] == max || assistantTemps[i] == min)
    {
      tempRange--;
    }
  }

  if(tempRange > missingTemps)
  {
    cout << "Incorrect" << endl;
    return 0;
  }

  cout << "Correct" << endl;
  return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n , m , min1 , max1 ;
    cin >> n >> m >> min1 >> max1;
    int h[m] ;
    int sum = 2 , sumin = 0 , sumax = 0;
    for(int i = 0; i < m ;i++)
    {
     cin >> h[i] ;
     if(h[i]==min1&&sumin==0){sum--;sumin++;}
     if(h[i]==max1&&sumax==0){sum--;sumax++;}
    }
    int max = h[0] , min = h[0] ;
     for(int i = 0; i < m ;i++)
     {
      if(h[i]>max)max=h[i];
      if(h[i]<min)min=h[i] ;
     }
     if(sum + m <= n&& max <= max1 && min >= min1)cout << "Correct";
     else cout << "Incorrect" ;
  return  0;
}

#include<bits/stdc++.h>
#define pb push_back
#define ll long long
using namespace std;
ll a , b  , c , d , ans = 1 ,mn = 1e9 ;
ll n , m , mx;
long long cnt;
char z;
string s ,s1;
vector<string>v;
int main(){
    cin >> n >> m >> a >> b;
    for( int i = 1; i<= m;i ++ ){
        cin >> c;
        if( c > a and c < b )
            cnt++;
            else if( c < a or c > b )
                return cout << "Incorrect" , 0;
    }
    if(  cnt + 2 <= n )
        cout << "Correct";
    else
        cout << "Incorrect";
}

#include <bits/stdc++.h>
using namespace std;
const int MaxN = 1e5;
int m, n, Min, Max, b, c, a[MaxN + 5];
int main()
{
	scanf("%d %d %d %d", &n, &m, &b, &c);
	int qmin = 1, qmax = 1, t = n - m, flag = 0;
	for(int i = 1; i <= m; i++) scanf("%d", &a[i]);
	for(int i = 1; i <= m; i++)
	{
		if(b == a[i]) qmin = 0;
		if(c == a[i]) qmax = 0;
		if(a[i] < b || a[i] > c) flag = 1;
	}
	if(t < qmin + qmax) flag = 1;
	if(flag == 0) printf("Correct\n");
	else printf("Incorrect\n");
}

#include <bits/stdc++.h>
using namespace std;
int n,m,ma,mi,a,b;
int main()
{
    cin>>n>>m>>mi>>ma;
    for (int i=0,x; i<m; i++)
    {
        cin>>x;
        if (x>mi&&x<ma) a++;
        if (x<mi || x>ma) b++;
    }
    if (a+2<=n && !b) cout<<"Correct"<<endl;
    else cout<<"Incorrect"<<endl;
    return 0;
}

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <numeric>
#include <set>
#include <map>
#include <stack>
#include <tuple>
#include <time.h>

using namespace std;

int main(){
#if _DEBUG
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
	ios_base::sync_with_stdio(false); cin.tie(0);
	int n, m, min, mx, t1 = 0, t2 = 0, min1 = 101, mx1 = -1;
	cin >> n >> m >> min >> mx;
	vector<int>x(m);
	for (int i = 0; i < m; ++i) {
		cin >> x[i];
		if (min1 > x[i]) min1 = x[i];
		if (mx1 < x[i]) mx1 = x[i];
		if (x[i] == mx) t1 = 1;
		if (x[i] == min) t2 = 1;
	}
	if (mx1 > mx || min1 < min) {
		cout << "Incorrect";
		return 0;
	}
	if (n - m >= 2) {
		cout << "Correct";
	}
	else {
		int t = t1 + t2;
		if (n - m == 0) {
			if (t == 2) cout << "Correct";
			else cout << "Incorrect";
		}
		else {
			if(t == 2 || t == 1) cout << "Correct";
			else cout << "Incorrect";
		}
	}
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define ll long long
//#define maxm 1e5
int main(){
    int n, m, minm, maxm, i;
    cin>> n >> m >> minm >> maxm;
    map<int, int> mp, freq_m;
    mp[minm]++;
    mp[maxm]++;
    bool flag = false;
    for(i=0; i<m; i++){
        int t;  cin>>t;
        if(t<minm || t>maxm)    flag = true;
        mp[t]++;
        freq_m[t]++;
    }
    i = mp.size();
    if(i <= n && !flag && (n-m >= mp.size() - freq_m.size()))  cout<<"Correct\n";
    else cout<<"Incorrect\n";
    return 0;
}

#include <bits/stdc++.h>
#define ios ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define ll long long
using namespace std;

long long power(long long a, long long b) {
    //a %= m;
    long long res = 1;
    while (b > 0) {
        if (b & 1)
            res = res * a;
        a = a * a;
        b >>= 1;
    }
    return res;
    }
  ll int binomial(ll int n, ll int k)
{
    ll int C[k+1];
    memset(C, 0, sizeof(C));

    C[0] = 1;  // nC0 is 1

    for (ll int i = 1; i <= n; i++)
    {
        // Compute next row of pascal triangle using
        // the previous row
        for (int j = min(i, k); j > 0; j--)
            C[j] = C[j] + C[j-1];
    }
    return C[k];
}
  vector<int> pr;
void Sieve(ll int n)
{
    bool prime[10000000];
    memset(prime, true, sizeof(prime));

    for (int p=2; p*p<=n; p++)
    {
        if (prime[p] == true)
        {
            pr.push_back(p);
            for (int i=p*p; i<=n; i += p)
                prime[i] = false;
        }
    }
}

int gcd(int a, int b)
{
    if (a == 0)
        return b;
    return gcd(b % a, a);
}

// Function to find gcd of array of
// numbers
int find(int arr[], int n)
{
    int result = arr[0];
    for (int i = 1; i < n; i++)
    {
        result = gcd(arr[i], result);

        if(result == 1)
        {
           return 1;
        }
    }
    return result;
}

//It reurns Fn,Fn+1
pair<int, int> fib (int n) {
    if (n == 0)
        return {0, 1};

    auto p = fib(n >> 1);
    int c = p.first * (2 * p.second - p.first);
    int d = p.first * p.first + p.second * p.second;
    if (n & 1)
        return {d, c + d};
    else
        return {c, d};
}

int main() {
   ll int n;
   cin>>n;
   ll int m;
   cin>>m;
   int min,max;
   cin>>min>>max;
   int a[m];
   int p=2;
   int o=0;
   for(int i=0;i<m;i++)
   {
       cin>>a[i];
       if(a[i]==min || a[i]==max)
       {
           p--;
       }
       if(a[i]<min || a[i]>max)
       {
            cout<<"Incorrect"<<endl;
            o=1;
            break;
       }
   }
   if(o==0)
   {
   int l=n-m;
   if(l>=p)
   {
       cout<<"Correct"<<endl;
   }
   else
   {
       cout<<"Incorrect"<<endl;
   }
   }
}

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
ll a[100009];
int main()
{
    ll n , m , mn , mx;
    cin >> n >> m >> mn >> mx;
    for(int i=0;i<m;i++){
        cin >> a[i];
    }
    ll mnn = *min_element(a,a+m);
    ll mxx = *max_element(a,a+m);
    if(mnn < mn || mxx > mx){
        cout << "Incorrect" << endl;
        return 0;
    }
    if((mn != mnn) + (mx != mxx) > n-m){
        cout << "Incorrect" << endl;
        return 0;
    }
    cout << "Correct" << endl;
    return 0;
}

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#define DEBUG(x) std::cout << '>' << #x << ':' << x << '\n';
#define PRINTVEC(x) for (int i = 0; i < (int)x.size(); i++) std::cout << x[i] << ' '; std::cout << '\n';
#define PRINTPAIR(x) for (int i = 0; i < (int)x.size(); i++) std::cout << x[i].first << ' ' << x[i].second << '\n'; std::cout << '\n';
#define PRINTSET(x) for (auto it = x.begin(); it != x.end(); it++) { std::cout << *it << ' '; } std::cout << '\n';
#define io std::ios_base::sync_with_stdio(false);std::cin.tie(NULL);
const int INF = 1<<29;
typedef long long ll;
using namespace std;

int main()
{
	io;
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif

    int n,m,mn,mx;
    cin >> n >> m >> mn >> mx;
    vector<bool> bb(2);
    int x;
    for (int i = 0; i < m; ++i) {
        cin >> x;
        if (x < mn || x > mx)
            return cout << "Incorrect",0;
        if (x == mn) bb[0] = true;
        if (x == mx) bb[1] = true;
    }
    int dif = abs(n - m);
    int cnt = 0;
    for (bool b : bb) if (b) cnt++;
    if (cnt + dif < 2)
        cout << "Incorrect";
    else cout << "Correct";

    #ifndef ONLINE_JUDGE
    std::cout << '\n' << "Time elapsed : " << 1.0 * clock() / CLOCKS_PER_SEC << " sec \n";
    #endif
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
    int n,m,mmax,mmin,f1=0,f2=0,flag=0;
    cin>>n>>m>>mmin>>mmax;
    for(int i=0;i<m;i++){
        int a;
        cin>>a;
        if(a>mmax||a<mmin)flag=1;
        if(a==mmax)f1=1;
        if(a==mmin)f2=1;
    }
    if(n-m<2-f1-f2||flag)puts("Incorrect");
    else puts("Correct");
}

#include <iostream>
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n,m,mini,maxi;
    vector<int>v;
    cin>>n>>m>>mini>>maxi;
    int mi = 0,ma = 0;
    for(int i = 0; i < m; i++){
        int x;
        cin>>x;
        v.push_back(x);
    }
    v.push_back(200);
    sort(v.begin(), v.end());
    int z1 = lower_bound(v.begin(), v.end(), mini) - v.begin();
    int z2 = lower_bound(v.begin(), v.end(), maxi) - v.begin();
    if(v[z1] != mini){
        n--;
    }
    if(v[z2] != maxi){
        n--;
    }
    n -= m;
    if(n < 0 || v[0] < mini || v[m-1] > maxi){
        cout<<"Incorrect";
    }else{
        cout<<"Correct";
    }
    return 0;
}

#include <iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
  int n,m,mi,ma;
  cin>>n>>m>>mi>>ma;
  vector<int>v(m);
  int a[150]={0};
  bool is=1;
  for(int i=0;i<m;i++)
  {cin>>v[i];
      if(v[i]<mi || v[i]>ma)
      is=0;
      else
      a[v[i]]=1;
  }
  int c=0;

  if(is){
      if(a[mi]==0&&a[ma]==0 && n-m>=2)
      cout<<"Correct\n";
      else  if((a[mi]==1||a[ma]==1 )&& n-m>=1)
      cout<<"Correct\n";
      else if((a[mi]==1&&a[ma]==1 ))
      cout<<"Correct\n";
      else
       cout<<"Incorrect\n";
  }else{
      cout<<"Incorrect\n";
  }

   return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define  fast()      ios :: sync_with_stdio(false); cin.tie(0);
#define  ll             long long int
#define  ull            unsigned long long int
#define     sz(x)       (int)x.size()
#define  ld             long double
#define  vi             vector<int>
#define vl              vector<long long>
#define vc              vector<char>
#define vs              vector<string>
#define vp              vector< pair<ll,ll> >
#define sl              set<long long>
#define sc              set<char>
#define sts             stack<string>
#define max_3(a,b,c)    max(a, max(b,c))
#define max_4(a,b,c,d)  max(a,max(b,max(c,d)))
#define min_3(a,b,c)    min(a, min(b,c))
#define min_4(a,b,c,d)  min(a,min(b,min(c,d)))
#define gcd(a,b)        __gcd(a,b)
#define lcm(a,b)        (a*b)/gcd(a,b)
#define pi              2*acos(0.0)
#define N               100006
#define in              1234567890;
int main()
{
    fast()
    /*freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);*/
    ll n,m,mn,mx,i,c=0,d;
    cin>>n>>m>>mn>>mx;
    for(i=1;i<=m;i++){
        cin>>d;
        if(d>mn&&d<mx) c++;
        if(d<mn||d>mx){cout<<"Incorrect";return 0;}
    }
    if(c+2<=n) cout<<"Correct";
    else cout<<"Incorrect";
}

#include <bits/stdc++.h>

using namespace std;

const int N = 101;

int n, m, mx, mn;
int a[N];
bool exist[N];

signed main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    cin >> n >> m >> mn >> mx;
    for (int i = 1; i <= m; i++) {
        cin >> a[i];
        exist[a[i]] = true;
    }

    if (*max_element(a + 1, a + 1 + m) > mx) {
        return cout << "Incorrect", 0;
    }

    if (*min_element(a + 1, a + 1 + m) < mn) {
        return cout << "Incorrect", 0;
    }

    if (exist[mx] && exist[mn]) {
        return cout << "Correct", 0;
    }

    if ((exist[mx] || exist[mn]) && n - m >= 1) {
        return cout << "Correct", 0;
    }

    if (n - m >= 2) {
        return cout << "Correct", 0;
    }

    cout << "Incorrect";

    return 0;
}

//In the name of God
//-----gmmj

#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>

#define Rep(I,N) for(int I=0;I<N;++I)
#define For(J,R,K) for(int J=R;J<K;++J)
#define DRI(X) int x;scanf("%d",&X);
#define DRII(X1,Y1) int X1,Y1;scanf("%d%d",&X1,&Y1);
#define RI(X2) scanf("%d",&X2);
#define WI(X4) printf("%d",X4);
#define WII(X5,X6) printf("%d %d",X5,X6);
#define SF scanf
#define PF printf
#define Pii pair<int,int>
#define Ff first
#define Ss second
#define Sorts(a,n) Rep(i,n)Rep(j,n-1)if(a[j]>a[j+1])swap(a[j],a[j+1]);
#define Sortn(a,n) Rep(i,n)Rep(j,n-1)if(a[j]<a[j+1])swap(a[j],a[j+1]);

typedef long long ll;

using namespace std;
ll m,n,mi,ma,d=1,a[1050];
bool mogh(){
	Rep(i,m)
		if(a[i]==ma||a[i]==mi)
			return true;
	return false;
}

int main(){
	//freopen("a.in","r",stdin);
	cin>>n>>m>>mi>>ma;
	Rep(i,m){
		cin>>a[i];
		if(a[i]>ma||a[i]<mi){
			d=0;
			break;
		}
		else if(m>(n-2)&&i==m-1){
			if(!mogh())
				d=0;
		}
	}
	if(d)
		cout<<"Correct";
	else
		cout<<"Incorrect";
	return 0;
}

#include<bits/stdc++.h>

using namespace std;

int n, m, mn, mx, a[11111];

int main ()
{
    cin >> n >> m >> mn >> mx;
    for(int i = 1; i <= m; i++)
        cin >> a[i];
    sort(a + 1, a + 1 + m);
    if(n - m == 0)
    {
        if(a[1] == mn && a[m] == mx)
            cout << "Correct";
        else cout << "Incorrect";
    }
    else if(n - m == 1)
    {
        if((a[1] == mn && a[m] <= mx)|| (a[m] == mx && a[1] >= mn))
            cout << "Correct";
        else cout << "Incorrect";
    }
    else
    {
        if(a[1] >= mn && a[m] <= mx)
            cout << "Correct";
        else cout << "Incorrect";
    }
}

/* 문제

*/

// 2014.

#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <functional>
#include <cstring>
#include <string>
#include <map>
#include <iostream>

#define INF     0x7fffffff
#define MINF    0x80000000
#define test    printf("test\n")
#define A       first
#define B       second

using namespace std;

typedef long long ll;
typedef vector <double> vec_d;
typedef vector <vec_d>  vvec_d;
typedef vector <int>    vec_i;
typedef vector <vec_i>  vvec_i;
typedef pair <int, int> pair_i;

int main()
{
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
#endif

    int n, m, min1, max1;
    int arr[101];

    cin >> n >> m >> min1 >> max1;

    for (int i = 0; i < m; i++)
    {
        cin >> arr[i];
    }

    sort(arr, arr + m);

    if (arr[0] < min1 || arr[m - 1] > max1)
    {
        printf("Incorrect\n");
        return 0;
    }

    if (n - m >= 2)
    {
        printf("Correct\n");
        return 0;
    }
    else
    {
        if (arr[0] == min1 || arr[m - 1] == max1)
        {
            printf("Correct\n");
            return 0;
        }
        else
        {
            printf("Incorrect\n");
            return 0;
        }
    }

    return 0;
}

#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define ld long double
#define S second
#define F first
#define ii pair <int,int>

const int N = 110;
int n , m, mn ,mx,mnn=100000,mxx;
int q ,q1,q2;
int main()
{
    cin>>n>>m>>mn>>mx;
    int t = n - m;
    for(int i = 0 ; i < m ; i++)
    {
        int a ;
        cin>>a;
        if(a == mn)
            q1 = 1;
        if(a == mx)
            q2 = 1;
        mnn = min(mnn,a);
        mxx = max(mxx,a);
    }
    if(mnn < mn || mxx > mx)
    {
        cout<<"Incorrect";
        return 0;
    }
    q = q1 + q2;
    if(q == 2)
        cout<<"Correct";
    else if(q == 1 && t >= 1)
        cout<<"Correct";
    else
        if(t >= 2)
            cout<<"Correct";
        else
            cout<<"Incorrect";

}

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
typedef long long  ll;
//typedef tree<ld,null_type,less<ld>,rb_tree_tag,tree_order_statistics_node_update> indexed_set
// this for long double
#define press_F_to_pay_respect ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define forn for(int i=0;i<n;i++)
#define form for(int j=0;j<n;j++)
#define fora(i,a,b) for(int i = a; i < (b); i++)
#define pb push_back
#define pob pop_back()
#define mp make_pair
#define sc second
#define f first
#define ld long double
#define kek cout<<endl;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define all(v) ((v).begin()), ((v).end())
#define pob pop_back()
#define halt {cout<<-1; return 0;}
const ll MOD = 1e9 + 7;
const ll MOD2 = 998244353;
const int N = 1010;
const int INF = 1e8;
const ll MOD1=1073741824;
const long double pi=3.1415926535;
using namespace std;
using namespace __gnu_pbds;
typedef tree<ld,null_type,less<ld>,rb_tree_tag,tree_order_statistics_node_update> indexed_set;
int main()
{
#if defined(_DEBUG)
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
 press_F_to_pay_respect;
 // cout << fixed << setprecision(12) << ans;
 // string al = "abcdefghijklmnopqrstuvwxyz";
        int n,m,mn,mx;
        cin>>n>>m>>mn>>mx;
        vector<int> v(m);
        forn cin>>v[i];
        sort(all(v));
        int mn1=v[0];
        int mx1=v[m-1];
        if(mn>mn1 || mx<mx1) {cout<<"Incorrect"; return 0;}
        int need=0;
        if(mn!=mn1) need++;
        if(mx!=mx1) need++;
        if(n-m>=need) cout<<"Correct";
        else cout<<"Incorrect";

  // cout <<"Runtime is:"<<clock() * 1.0 / CLOCKS_PER_SEC <<endl;
   return 0;

}

#include <bits/stdc++.h>
#define ll long long int
#define pb push_back
#define pii pair<int, int>
#define pll pair<ll, ll>
#pragma GCC optimize ("O3")
using namespace std;
int main () {
    ios::sync_with_stdio(false);
    cin.tie (0);
    int n, m, mn, mx; cin>>n>>m>>mn>>mx;
    bool MN=0, MX=0;
    for (int i=0;i<m;++i) {
        int k; cin>>k;
        if (k==mn) MN=1;
        if (k<mn) {
            cout<<"Incorrect";
            return 0;
        }
        if (k==mx) MX=1;
        if (k>mx) {
            cout<<"Incorrect";
            return 0;
        }
    }
    if (MN || MX) cout<<"Correct";
    else if (n-m>1) cout<<"Correct";
    else cout<<"Incorrect";
    return 0;
}

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int t, n, m, lo, hi, nlo, nhi;
    cin >> n >> m >> lo >> hi;
    nlo = lo;
    nhi = hi;
    for(int i = 0; i < m; i++)
    {
        cin >> t;
        nlo = min(nlo, t);
        nhi = max(nhi, t);
    }

    cout << (m + 2 <= n && nlo == lo && nhi == hi? "Correct" : "Incorrect") << endl;

    return 0;
}

# include <cstring>
# include <cstdio>
# include <algorithm>
# include <iostream>
using namespace std;

int main ()
{
    int a,b,c,d,e,f;
    int mm,nn;
    cin >> a >> b >> c >> d;
    mm = c - 1;
    nn = d + 1;
    for (e = 0;e < b;e++)
    {
        cin >> f;
        if (f <= nn)
        nn = f;
        if (f >= mm)
            mm = f;
    }
    if (a - b >= 2)
        cout << "Correct" <<endl;
    else
    {
        if (mm == d || nn == c)
            cout << "Correct" <<endl;
        else
            cout << "Incorrect" <<endl;
    }
    return 0;
}

#include <iostream>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <map>
#include<string>
#include <cstring>
#include <cstdlib>
#define pi acos(-1.0)
using namespace std;

int main()
{
    int n,m,min,max;
    int a[200];
    while(cin>>n>>m>>min>>max)
    {
        a[0]=min,a[1]=max;
        int count=1,flag,ok=1;
        for(int i=2;i<m+2; i++)
        {
            cin>>a[i];
            if(a[i]>max||a[i]<min)
                ok=0;
        }
        sort(a,a+m+2);
        for(int j=1;j<m+2;j++)
        {
            if(a[j]!=flag)
            {
                count++;
                flag=a[j];
            }
        }
        if(count<=n&&ok)
        {
            printf("Correct\n");
        }
        else
            printf("Incorrect\n");
    }
    return 0;
}

#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <string>
#include <cstring>
#include <ctype.h>

using namespace std;

#define print(a) cout<< a <<endl
#define print2(a,b) cout<< a <<" "<< b <<endl
#define print3(a,b,c) cout<< a <<" "<< b <<" "<< c <<endl
#define pb push_back
#define popb pop_back
#define mem(name, x) memset(name, x, sizeof(name))
#define rep(i,n) for(i=0;i<(int)(n);i++)
#define rep2(i,n) for(i=1; i<=(int)(n); i++)
#define SZ(x) (int)x.size()
#define PI (2*acos(0))
#define ERR 1e-7
#define EQ(a,b)(fabs(a-b)<ERR)
#define lookalike scanf("%*d")
#define fst first
#define snd second
#define PQ priority_queue
#define LOG(x,BASE) (log10(x)/log10(BASE))
#define INFI 1<<30
#define makep(x, y) make_pair(x, y)
#define LOJ(a, b) printf("Case %d: %d\n", a, b)
#define popcount __builtin_popcount
#define All(a) (a.begin(), b.end())
#define FOREACH(it,x) for(__typeof((x).begin()) it=(x.begin()); it!=(x).end(); ++it)
#define Reverse(x) reverse(x.begin(),x.end())

typedef unsigned long long ULL;
typedef long long ll;
typedef pair<int,int> paii;
typedef pair<int, string> pais;

template<class T> inline T lcm(T a,T b)
{if(a<0)return lcm(-a,b);if(b<0)return lcm(a,-b);return a*(b/(gcd(a,b)));}
template<class T> inline T gcd(T a,T b)
{if(a<0)return gcd(-a,b);if(b<0)return gcd(a,-b);return (b==0)?a:gcd(b,a%b);}

template<class T1> void deb(T1 e){cout<<e<<endl;}
template<class T1,class T2> void deb(T1 e1,T2 e2){cout<<e1<<" "<<e2<<endl;}
template<class T1,class T2,class T3> void deb(T1 e1,T2 e2,T3 e3){cout<<e1<<" "<<e2<<" "<<e3<<endl;}
template<class T1,class T2,class T3,class T4> void deb(T1 e1,T2 e2,T3 e3,T4 e4){cout<<e1<<" "<<e2<<" "<<e3<<" "<<e4<<endl;}
template<class T1,class T2,class T3,class T4,class T5> void deb(T1 e1,T2 e2,T3 e3,T4 e4,T5 e5){cout<<e1<<" "<<e2<<" "<<e3<<" "<<e4<<" "<<e5<<endl;}
template<class T1,class T2,class T3,class T4,class T5,class T6> void deb(T1 e1,T2 e2,T3 e3,T4 e4,T5 e5,T6 e6){cout<<e1<<" "<<e2<<" "<<e3<<" "<<e4<<" "<<e5<<" "<<e6<<endl;}

int bigmod(ll b, ll p, ll m){ ll r=1;while(p>0){if(p%2==1)r=(r * b ) % m;p/=2;b = ( b * b) % m;}return r; }

void BINARY(int n){cout<<"Mask: ";for(int i=10;i>=0;i--) if(n&(1<<i))cout<<1;else cout<<0;cout<<endl;}

///int rrr[]={1,0,-1,0};int ccc[]={0,1,0,-1}; //4 Direction
///int rrr[]={1,1,0,-1,-1,-1,0,1};int ccc[]={0,1,1,1,0,-1,-1,-1};//8 direction
///int rrr[]={2,1,-1,-2,-2,-1,1,2};int ccc[]={1,2,2,1,-1,-2,-2,-1};//Knight Direction
///int rrr[]={2,1,-1,-2,-1,1};int ccc[]={0,1,1,0,-1,-1}; //Hexagonal Direction
///int month[]={31,28,31,30,31,30,31,31,30,31,30,31}; //month

#define MAX 150

int arr[MAX];

int main()
{
    mem(arr, 0);
    bool flag = false;
    int i, n, m, a, mini, maxi;
    cin >> n >> m >> mini >> maxi;
//    arr[mini] = arr[maxi] = 1;
    for(i=0; i<m; i++)
    {
        cin >> a;
        if(a>maxi or a<mini) flag = true;
        arr[a]++;
    }
    int cnt = 0;
    for(i=0; i<MAX; i++)
    {
        if(arr[i]) cnt+=arr[i];
    }
    if(!arr[mini])arr[mini] = 1; if(!arr[maxi]) arr[maxi] = 1;
    if(cnt>n) flag = true;
    if(flag) cout <<"Incorrect"<<endl;
    else cout <<"Correct"<<endl;
    return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <stdio.h>
#include <set>
#include <vector>

#define ll long long
#define ull unsigned long long
#define INF (1 << 30)
#define Nmax 1e5
#define y1 wejfiw
#define pb push_back
#define mk make_pair

#define yes "Correct"
#define no "Incorrect"

using namespace std;

int n, m, mn, mx;
int a[1000];
int real_mn, real_mx;

int main(){
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);

	cin >> n >> m >> mn >> mx;
	for (int i = 0; i < m; i++) cin >> a[i];
	sort(a, a + m);
	real_mn = a[0];
	real_mx = a[m - 1];
	if (real_mn == mn && real_mx == mx) cout << yes; else
	if (real_mn == mn && real_mx != mx && m < n) cout << yes; else
	if (real_mn != mn && real_mx == mx && m<n) cout << yes; else
	if (real_mn != mn && real_mx != mx && n - m>1) cout << yes; else cout << no;
	cout << endl;

	return 0;
}

#include<cstdio>

using namespace std;

int main()
{
    int n, m, mi, ma;
    int a[107] = {0}, b[107] = {0};
    int i, j, t = 0;
    while(~scanf("%d%d%d%d", &n, &m, &mi, &ma)){
        for(i = 1; i <= m; i++){
            scanf("%d", &a[i]);
            if(m == 1 && n - m == 1){
                if(a[i] != mi && a[i] != ma){
                    t++;
                }
            }
            else{
                if(a[i] < mi || a[i] > ma){
                    t++;
                }
            }
        }
        if(t != 0){
            printf("Incorrect\n");
        }
        else{
            printf("Correct\n");
        }
        return 0;
    }
}

#include<iostream>

using namespace std;

int main()
{
	int n,m,min,max;
	cin>>n>>m>>min>>max;
	int a[n],flag=1,temp;
	//a[0]=min;
	//a[n-1]=max;
	if(n>2)
	{
	for(int i=0;i<m;i++)
	{
		cin>>temp;

		if((temp>max)||(temp<min))
		{
			flag=0;
		}
	}
		if(flag)
			cout<<"Correct"<<endl;
		else
			cout<<"Incorrect"<<endl;

	}
	else
	{	cin>>temp;
		if((n-2<1)&&(temp!=min)&&(temp!=max))
		{
			cout<<"Incorrect"<<endl;

		}
		else
		{
			cout<<"Correct"<<endl;

		}
	}
	return 0;

}

#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<list>
#include<set>
#include<map>
#include<algorithm>
#include<iterator>
#include<numeric>

using namespace std;

int main(void)
{
    int n,m,mina,maxa,a,found1=0,found2=0,i;
    scanf("%d%d%d%d",&n,&m,&mina,&maxa);
    for(i=1;i<=m;i++)
    {
        scanf("%d",&a);
        if(a==mina)
        found1=1;
        if(a==maxa)
        found2=1;
    }
    if(found1 && found2)
    {
        printf("Correct");
    }
    else if(found1 || found2)
    {
        if(n-m>=1)
        {
            printf("Correct");
        }
        else
        {
            printf("Incorrect");
        }
    }
    else
    {
        if(n-m>=2)
        {
            printf("Correct");
        }
        else
        {
            printf("Incorrect");
        }
    }

    return 0;
}

#include<iostream>
#include<algorithm>
using namespace std;

int main(){
    int n,m,mymax,mymin,num[110],flag,x;
    while(cin>>n>>m>>mymin>>mymax){
        flag=0;
        for(int i=0;i<m;i++){
            cin>>num[i];
        }
        for(int i=0;i<m;i++){
            if(num[i]<mymax&&num[i]>mymin){
                x=num[i]-mymin+mymax-mymin+1;
                if(x>=n){
                    continue;
                }
                else{
                    flag=1;
                    break;
                }
            }
            else if(num[i]<mymin||num[i]>mymax){
                flag=1;
                break;
            }
        }
        if(flag){
             cout<<"Incorrect"<<endl;
        }
        else{
             cout<<"Correct"<<endl;
        }
    }
    return 0;
}

#include<iostream>
using namespace std;
int main()
{
    int i,n, m,k, w,temp=0,min, max;
    cin >> n >> m >> min >> max;
    w = n - m;
    for ( i = 0; i < m; i++)
    {
        cin >> k;
        if (k == min)
            temp++;
        else if (k == max)
            temp++;

    }
    if (w >= (2 - temp))
        cout << "Correct";
    else
        cout << "Incorrect";
    return 0;
}

/// "All the praises be to Allah, the Lord of the 'Alamin (worlds i.e. mankind, jinns and all that exists)"///

#include <stdio.h>
#include <iostream>
#include <math.h>
#include <string.h>
#include <string>
#include <algorithm>
#include <stack>
#include <set>
#include <queue>
#include <vector>
#include <map>
#include <assert.h>
#include <utility>
#define ms(a,b) memset(a,b,sizeof(a))
#define inf 1<<28
#define mp make_pair
#define pii pair<int,int>
#define fs first
#define sc second
#define pob pop_back
#define vec_ vector
#define clr(a) a.clear()
#define pb push_back
#define eps 1E-7
#define sf scanf
#define pf printf
#define all(a) a.begin(),a.end()
#define allr(a) a.rbegin(),a.rend()
#define fop   freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#define scch(a) scanf(" %c",&a)
#define scll1(a) scanf(" %I64d",&a)
#define scll2(a,b) scanf(" %I64d %I64d",&a,&b)
#define scll3(a,b,c) scanf(" %I64d %I64d %I64d",&a,&b,&c)
#define sci1(a) scanf(" %d",&a)
#define sci2(a,b) scanf(" %d %d",&a,&b)
#define sci3(a,b,c) scanf(" %d %d %d",&a,&b,&c)
#define scd1(a) scanf(" %lf",&a)
#define scd2(a,b) scanf(" %lf %lf",&a,&b)
#define scd3(a,b,c) scanf(" %lf %lf %lf",&a,&b,&c)
#define deb1(a) cout<<a<<endl;
#define deb2(a,b) cout<<a<<" "<<b<<endl
#define deb3(a,b,c) cout<<a<<" "<<b<<" "<<c<<endl
#define sz(a) a.size()
#define ll long long
#define ull unsigned long long
#define dd double
using namespace std;
//template <class T> T lcm(T a, T b){return (a/__gcd(a,b)) * b;}
//ll bigmod(ll a,ll b,ll m){if(b == 0) return 1%m;ll x = bigmod(a,b/2,m);x = (x * x) % m;if(b % 2 == 1) x = (x * a) % m;return x;}
//int X[]={0,-1,-1,-1,0,1,1,1};
//int Y[]={-1,-1,0,1,1,1,0,-1};
//int X[]={-1,0,1,0};
//int Y[]={0,1,0,-1};

/// "All the praises be to Allah, the Lord of the 'Alamin (worlds i.e. mankind, jinns and all that exists)"///

#define mt 110
#define mod

int main ()
{
    int n,m,a,b,c;

    bool f1=false;
    bool f2=false;

    cin>>n>>m>>a>>b;

   int baki=n-m;

    while(m--)
    {
        cin>>c;

        if(c==a)
            f1=true;

        if(c==b)
            f2=true;
    }

    if(f1 && f2)
    {
        puts("Correct");
    }
    else if((f1 && !f2 && baki>=1) || (!f1 && f2 && baki>=1))
    {
        puts("Correct");
    }
    else if(!f1 && !f2 && baki>=2)
    {
        puts("Correct");
    }
    else
    {
        puts("Incorrect");
    }

    return 0;
}

#include<iostream>
using namespace::std;
bool found_min = 1;
bool found_max = 1;
int main()
{
    int n, m, min, max;
    int my_array[1001];
    cin >> n >> m >> min >> max;
    for (int i = 0; i < m; i++)
        cin >> my_array[i];
    if (n - m >= 2)
    {
        cout << "Correct";
        goto end2;

    }
    if (n-m==1)
    {
        for (int i = 0; i < m; i++)
        {
            if (my_array[i] != min)

                found_min = 0;
            else
            {
                found_min = 1;
                goto end;
            }

        }
        for (int i = 0; i < m; i++)
        {
            if (my_array[i] != max)

                found_max = 0;
            else
            {
                found_max = 1;
                goto end;
            }
        }
    end:
        if (found_max == 0 || found_min == 0)
        {
            cout << "Incorrect";
            goto end2;
        }
        if (found_max == 1 || found_min == 0)
        {

            cout << "Correct";
            goto end2;
        }
        if (found_max == 0 || found_min == 1)
        {
            cout << "Correct";
            goto end2;
        }
        if (found_max == 1 || found_min == 1)
        {
            cout << "Correct";
            goto end2;
        }
    }
    if (n == m)
    {
        for (int i = 0; i < m; i++)
        if (my_array[i] == min)
        {
            found_min = 1;
            goto end2;
        }
        else
            found_min = 0;

        for (int i = 0; i < m; i++)
        if (my_array[i] == max)
        {
            found_max = 1;
            goto end;
        }
        else found_max = 0;
        if (found_max == 1 && found_min == 1)
            cout << "Correct";
        else
        {
            cout << "Incorrect";
        }
    }
    end2:
        //system("pause");
        return 0;
    }

#include<iostream>
#include<algorithm>
using namespace std;

int main(){
    int n,m,mymax,mymin,num[110],flag,x;
    while(cin>>n>>m>>mymin>>mymax){
        flag=0;
        for(int i=0;i<m;i++){
            cin>>num[i];
        }
        for(int i=0;i<m;i++){
            if(num[i]<mymax&&num[i]>mymin){
                x=num[i]-mymin+mymax-mymin+1;
                if(x>=n&&n>2){
                    continue;
                }
                else{
                    flag=1;
                    break;
                }
            }
            else if(num[i]<mymin||num[i]>mymax){
                flag=1;
                break;
            }
        }
        if(flag){
             cout<<"Incorrect"<<endl;
        }
        else{
             cout<<"Correct"<<endl;
        }
    }
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0) , cin.tie(0) , cout.tie(0)
int in(){int32_t x ; scanf("%d",&x) ;  return x ;}
inline long long lin() {long long x ; scanf("%lld",&x) ; return x ;}
const int maxn = 1e6 + 10;
int a[maxn];
int32_t main()
{
    int n = in() , m = in() , mini = in() , maxi = in();
    for (int i = 0 ; i < m ; i ++) a[i] = in();
    sort(a,a+m);
    if (a[0] <mini || a[m-1] > maxi) return cout << "Incorrect\n" , 0;
    a[m] = mini , a[m + 1] = maxi;
    sort(a,a+m+2);
    int sz = unique(a,a+m+2)-a;
    if (sz <=n) return cout << "Correct\n" , 0;
    return cout << "Incorrect\n" , 0;
}

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <limits.h>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
typedef pair<int,int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
#define DEBUG(x) cout << ">>> " << #x << " : " << x << endl;
#define MP make_pair
#define PB push_back
#define REP(i,b) for ( int i = 0; i < int(b); ++i )
#define FOR(i,a,b) for ( int i = int(a); i <= int(b); ++i )
#define FORD(i,a,b) for ( int i = int(a); i >= int(b); --i )
#define RI(a) scanf("%d", &a)
#define RII(a,b) scanf("%d%d", &a, &b)
#define RIII(a,b,c) scanf("%d%d%d", &a, &b, &c)
#define RIIII(a,b,c,d) scanf("%d%d%d%d", &a, &b, &c, &d)
const int INF = 1<<29;
typedef long long ll;

int main( ) {
  int n, m, min, max, x;
  RIIII( n, m, min, max );
  REP( i, m ) {
    RI( x );
    if ( x == min )
      min = -1;
    if ( x == max )
      max = -1;
    if ( x < min || x > max ) {
      printf("Incorrect\n");
      return 0;
    }
  }
  if ( n - m == 1 && min != -1 && max != -1 )
    printf("Incorrect\n");
  else
    printf("Correct\n");

  return 0;
}

#include <bits/stdc++.h>

#define DeltaCube23 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define pb push_back
#define mp make_pair
#define minimum(a) *min_element(a.begin(), a.end())
#define maximum(a) *max_element(a.begin(), a.end())
#define mod 1000000007
#define forf(i,a,b) for(int i = (a); i < (b); i++)
#define forr(i,a,b) for(int i = (a); i >= (b); i--)
typedef long long int lli;

using namespace std;

const int mx = 2e6+5;
int main()
{
    DeltaCube23
	int t=1;
	//cin>>t;
	while(t--)
	{
		int n,m,min,max;
		cin>>n>>m>>min>>max;
		vector<int> a(m);
		forf(i,0,m)
		cin>>a[i];
		int p=minimum(a);
		int q=maximum(a);
		bool ans = true;
		int c=0;
		if(p != min)
		c++;
		if(q != max)
		c++;
		if(n-m < c)
		ans = false;
		if(p>max || q<min)
		ans = false;
		if(ans)
		cout<<"Correct";
		else
		cout<<"Incorrect";
	}
	return 0;
}

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	long long n,m,min,max,i,a[101],kol=0,KOL=0;
	cin>>n>>m>>min>>max;
	bool f=true;
	for(i=0;i<m;i++)
		cin>>a[i];
	for(i=0;i<m;i++)
	{
		if(a[i]==min)
			kol++;
		if(a[i]==max)
			KOL++;
	}
	if(n==1)
	{
		cout<<"Incorrect";
		return 0;
	}
	if(kol>=1&&KOL>=1)
	{
		cout<<"Correct";
		return 0;
		f=false;
	}
	if((kol>=1||KOL>=1)&&(n-m>=1))
	{
		cout<<"Correct";
		return 0;
		f=false;
	}
	if((kol>=1||KOL>=1)&&(n-m<1))
	{
		cout<<"Incorrect";
		return 0;
		f=false;
	}
	if(n-m>=2)
	{
		cout<<"Correct";
		return 0;
		f=false;
	}
	if(f)
		cout<<"Incorrect";
}

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<limits.h>

#define il(n) scanf("%lld",&n)
#define i(n) scanf("%d",&n)
using namespace std;
int arr[105],n,m,i,miny,maxy;
int main()
{
cin>>n>>m>>miny>>maxy;
for(i=1;i<=m;i++)
    cin>>arr[i];
if(n==2)
{
    //cout<<arr[1]<<" "<<miny<<" "<<maxy;
    if((arr[1]==miny)||(arr[1]==maxy))
    cout<<"Correct";
    else
    cout<<"Incorrect";
}else
{
    int p=0,p1=0,x=0;
    for(i=1;i<=m;i++)
    {
        if((arr[i]>miny)&&(arr[i]<maxy))
            p++;
        else
        {
           if((arr[i]==miny)||(arr[i]==maxy))
            p1++;
            else
            x=-1;
        }
    }
    if(x!=1)
    {
        if(m==(n-1))
        {
            if(p==0)
                x=-1;
        }
    }
if(x!=-1)
    cout<<"Correct";
    else
    cout<<"Incorrect";
}

return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include <set>
#include <map>
#include <cmath>
#include <stack>
#include <queue>
#include <string>
#include <cstdio>
#include <vector>
#include <cctype>
#include <climits>
#include <sstream>
#include <cstdlib>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;

#define fast ios_base::sync_with_stdio(false)

#define read freopen("in.in","r",stdin)
#define write freopen("out.in","w",stdout)

#define it_rep(a,it) for(auto it=a.begin();it!=a.end();++it)
#define rep(i,a,b) for(int i=a;i<b;++i)
#define rep_r(i,a,b) for(int i=a;i>=b;--i)
#define rep_c(i,a,c) for(int i=a;c;++i)
#define wh(t) while(t--)

#define Set(a,b) memset(a,b,sizeof a)
#define Vset(a,b,c) a.resize(b,c)
#define clr(a) a.clear()
#define Sz(a) a.size()
#define Arrsz(a) sizeof a / sizeof a[0]
#define All(a) a.begin(),a.end()
#define mpp(a,b,c) mp(mp(a,b),c)
#define mp make_pair

#define Bug puts("Bug")
#define Nl puts("");
#define Vi vector
#define pr pair
#define N 1001
#define oo INT_MAX
#define stint(a) static int a = 1

#define isnum(a) (a>=48 && a<=57)
#define isL(a) (a>='a' && a<='z')
#define isU(a) (a>='A' && a<='Z')
#define toL(a) (isU(a)?a+32:a)
#define toU(a) (isS(a)?a-32:a)
#define toC(a) a&15

typedef long long lli;
typedef unsigned long long llu;
typedef Vi<int> vi;
typedef Vi<lli> vl;
typedef pr<int, int> pii;
typedef pr<int, char> pic;
typedef pr<lli, int> pli;
typedef pr<int, pii> piii;
typedef map<int, int> mii;
typedef map<lli, int> mli;
typedef map<string, int> msi;

int gcd(int a, int b){ return (a == 0) ? b : (b == 0) ? a : gcd(b, a%b); }
int str_div(char *s, int n){ int y = 0, ln = strlen(s); rep(i, 0, ln)y = (y * 10 + (s[i] - 48)) % n; return y; }
int get(){
    int y, s = 1, i = 10;
    y = 0;
    char c = getchar();
    while (!isnum(c)){
        if (c == '-')s = -1; c = getchar();
    }
    while (isnum(c))y = (y << 1) + (y << 3) + (toC(c)), c = getchar();
    if (c != '.')return y*s;
    c = getchar();
    while (isnum(c))y = y + (toC(c)) / i, i = (i << 1) + (i << 3), c = getchar();
    return y*s;
}

int dx[] = { 1, -1, 0, 0 };
int dy[] = { 0, 0, 1, -1 };

int main()
{

    fast;
    map<int,int>cont;
    int n,m,mn,mx,f=0;
    cin>>n>>m>>mn>>mx;
    rep(i,0,m){
        int x; cin>>x;
        cont[x]=1;

    }
    rep(i,mn,mn+n){if(i>mx){puts("Incorrect"); return 0;}
    cont[i]++;
    }
    if(cont[mn] && cont[mx])puts("correct");
    else puts("Incorrect");

}

#include<stdio.h>
#include<stdlib.h>

using namespace std;

int main(void){
	int n,m,min,max;
	scanf("%d %d %d %d\n",&n,&m,&min,&max);
	bool sol;
	int k;
	sol = true;
	for (int i = 0; i < n-m; i++){
		scanf(" %d",&k);
		if ((k < min)||(k > max)) sol = false;
	}
	if (n-m > 1){
		if (sol) printf("Correct\n");
		else printf("Incorrect\n");
	} else {
		if (sol) printf("Correct\n");
		else  printf("Incorrect\n");
	}
}

#include <bits/stdc++.h>

using namespace std;

const int N = 101;

int n, m, mx, mn;
int a[N];
bool exist[N];

signed main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    cin >> n >> m >> mx >> mn;
    for (int i = 1; i <= m; i++) {
        cin >> a[i];
        exist[a[i]] = true;
    }

    if (exist[mx] && exist[mn]) {
        return cout << "Correct", 0;
    }

    if ((exist[mx] || exist[mn]) && n - m >= 1) {
        return cout << "Correct", 0;
    }

    if (n - m >= 2) {
        return cout << "Correct", 0;
    }

    cout << "Incorrect";

    return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main() {
    //freopen("a.in","r",stdin);
    int n, m, a, b, f = 0, dif;
    cin >> n >> m >> a >> b;
    dif = n - m;
    int arr[m + 1];
    for (int i = 0; i < m; ++i)
        cin >> arr[i], f += (arr[i] == a || arr[i] == b);
    if (dif >= (2 - f) && (b - a) - 2 > dif)
        printf("Correct");
    else
        puts("Incorrect");

    return 0;
}

#include <bits/stdc++.h>

using namespace std;

#define all(c) begin(c),end(c)
#define p(i,j) pair<i,j>
#define v(i) vector<i>

/* input */
 template<typename T>istream& operator >> ( std::istream& in,v(T)&a){for(auto &it:a)in>>it;return in;}
 template<typename T1,typename T2>istream& operator >>( std::istream& in,p(T1,T2)&a){in>>a.first>>a.second;return in;}

/* output */
 template<typename T>ostream& operator << ( std::ostream& out,v(T)&a){for(auto it:a){out<<" "<<it;}out<<endl;return out;}
 template<typename T1,typename T2>ostream& operator <<( std::ostream& out,p(T1,T2)&a){out<<a.first<<' '<<a.second;return out;}

const int INF=1e9;

main()
{
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n,m,mi,ma;
    cin>>n>>m>>mi>>ma;
    int mix=INF,man=-INF;
    int t;
    for(int i=0;i<m;i++)
    {
        cin>>t;
        mix=min(mix,t);
        man=max(man,t);
    }
    if(mix>=mi && man<=ma)
        cout<<"Correct"<<endl;
    else
        cout<<"Incorrect"<<endl;

}

#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <algorithm>
#include <stdio.h>
#define File_in(input) freopen(input, "r", stdin)
#define File_out(output) freopen(output, "w", stdout)
#define all(x) x.begin(),x.end()
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair <int,int> point;

int main () {
    int n,m,x,y;
    cin >> n >> m >> x >> y;
    int t[110] = {0};
    for (int i = 0; i < m; i++) {
        int tt;
        cin >> tt;
        t[tt] = 1;
    }
    for (int i = x; i <=y; i++){
        if (t[i]!=1)
            m++;
    }
    cout <<  ((m == n) ? "Correct" : "Incorrect") << '\n';
}

#include <iostream>
#include <cstdio>
using namespace std;
int n,m,mi,ma;
int main() {
	cin >> n >> m >> mi >> ma;

	if (n >= m + 2) {cout << "Correct"; return 0;} else
	{
		int mymi = 999999, myma = -1,x;
		for (int i = 1; i <= m; i++) {
			cin >> x;
			if (x > myma) myma = x;
			if (x < mymi) mymi = x;
		}
		if (x == mymi || x == myma) cout << "Correct"; else cout << "Incorrect";
	}
}

#include <algorithm>
#include <bitset>
#include <iostream>
#include <sstream>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <ctime>
#include <cmath>

using namespace std;

#define rep(a, b, e) for(int a = (int) b; a < (int) e; ++a)
#define clr(a, val) memset(a, val, sizeof(a))
#define debug(a) cerr << #a << ": " << a << endl;
#define debugv(b, t) cerr << #b << ":\n"; rep(countvec, 0, t) { cerr << b[countvec] << '\t'; } cerr << endl;
#define debugm(c, t, u) cerr << #c << ":\n"; rep(countmat, 0, t) { rep(countbb, 0, u) { cerr << c[countmat][countbb] << '\t'; } cerr << endl; }
#define sorta(a) sort(a, 0, sizeof(a))
#define sortv(x) sort((x).begin(),(x).end())
#define sortr(v) sort((v).rbegin(),(v).rend())
#define INF 1<<30
#define MOD 1000000007
#define MAXN 8

int conversion(string p){ int num; num=atoi(p.c_str()); return num; }
string toString(int h){ stringstream ss; ss<<h; return ss.str(); }
long long gcd(long long a,long long b) { return (b==0 ? a : gcd(b,a%b));}
long long lcm(long long a,long long b) { return (a*(b/gcd(a,b))); }

vector<int> V;

int main() {
    #ifndef ONLINE_JUDGE
        ios::sync_with_stdio(true);
        freopen("D:/Sublime/in.txt","r",stdin);
        freopen("D:/Sublime/out.txt","w",stdout);
        clock_t start = clock();
    #endif

        int n,m,minimo,maximo;
        cin>>n>>m>>minimo>>maximo;
        rep(i,0,m){
            int a; cin>>a;
            V.push_back(a);
        }
        int a=0,b=0;
        rep(i,0,V.size()) {
            if(V[i]==minimo) {
                a=1;
            }
            if (V[i]==maximo){
                b=1;
            }
        }
        int cant=n-m;
        if(a==1 && b==1){
            cout<<"Correct"<<endl;
        }
        else if((a==0 && b==1) || (a==1 && b==0)){
            if(cant>=1) cout<<"Correct"<<endl;
            else cout<<"Incorrect"<<endl;
        }
        else if(a==0 && b==0){
            if(cant>=2) cout<<"Correct"<<endl;
            else cout<<"Incorrect"<<endl;
        }

    #ifndef ONLINE_JUDGE
        fprintf(stderr, "\ntime=%.3lfsec\n", 0.001 * (clock() - start));
    #endif
    return 0;
}

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int main()
{
    int a[200];
    int n,m,min,max;
    int p = 0;
   cin>>n>>m>>min>>max;
    for(int i = 0; i < m; i++)
    {
        cin>>a[i];
        if(a[i] == min)
        p++;
        if(a[i] == max)
        p++;
    }
    if((n - m + p) >= 2)
    cout<<"Correct"<<endl;
    else
    cout<<"Incorrect"<<endl;
    //}
    return 0;
}

# include <algorithm>
# include <iostream>
# include <hash_set>
# include <hash_map>
# include <string.h>
# include <cstring>
# include <sstream>
# include <iomanip>
# include <string>
# include <cstdio>
# include <vector>
# include <deque>
# include <queue>
# include <cmath>
# include <list>
# include <map>
# include <set>
#pragma comment (linker, "/STACK:17000000")
#define MP make_pair
using namespace std;

typedef unsigned long long ull;
typedef pair<int, char > P;
typedef long long ll;
typedef double db;

const db eps=1e-9, inf=1e9, pi=acos(-1.0);

int main(){
    int n, m, mx, mn;
    vector<int > v;
    cin>>n>>m>>mn>>mx;
    v.resize(m);
    for(int i=0; i<m; i++)
        cin>>v[i];
    if(m>n){cout<<"Incorrect"; return 0;}

    if(n==m+1){
        int kol=0;
        for(int i=0; i<m; i++){
            if(v[i]==mx) {kol++; break;}
        }
        for(int i=0; i<m; i++){
            if(v[i]==mn) {kol++; break;}
        }
        if(kol==0) { cout<<"Incorrect"; return 0; }
    }
    cout<<"Correct";
    return 0;
}

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<string>

#define MAX(a,b) ((a) > (b) ? a : b)
#define MIN(a,b) ((a) < (b) ? a : b)
#define IT(a,it) for(auto it=a.begin(); it != a.end(); it++)
#define REV_IT(a,it) for(auto it=a.rbegin(); it != a.rend(); it++)
#define MAXX 1000

using namespace std;

int temp[200];
int main(){
	int n,m,min,max, i, newMin = -1, newMax = -1;
	cin>>n>>m>>min>>max;
	for(i=0;i<m;i++){
		scanf("%d",&temp[i]);
		if(newMin == -1) newMin = temp[i];
		if(newMax == -1) newMax = temp[i];
		if(temp[i]>newMax) newMax = temp[i];
		if(temp[i]<newMin) newMin = temp[i];
	}
	int temp = n - m;
	if(newMin < min && newMax > max) cout<<"Incorrect";
	else if(newMin == min || newMax == max){
		if(temp >=1) cout<<"Correct";
		else cout<<"Incorrect";
	}else{
		cout<<"Incorrect";
	}
	cout<<endl;
return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n,m,min_,max_,t;
    int A[107];
    bool ch_up=0,ch_dn=0;
    cin>>n>>m>>min_>>max_;
    for(int i=0;i<m;i++)
    {
        int r;
        cin>>r;
        if(r==min_)ch_dn=1;
        if(r==max_)ch_up=1;
    }
    if(ch_up and ch_dn)
        cout<<"Correct\n";
    else
    {
        int r=0;
        if(ch_up or ch_dn)r++;
        //cout<<r<<endl;
        if(n-m<(2-r)) cout<<"Incorrect\n";
        else cout<<"Correct\n";
    }
    return 0;
}

// 413A.cpp : Defines the entry point for the console application.
//

// #include <stdafx.h>
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <stdio.h>

using namespace std;
long long n, m, mx, mn, k, i = 0, W= 0;

int main ()
{
    cin >> n >> m >> mx >> mn;
    while (i< m)
    {
        W = 0;
        cin >> k;
        if (k == mx || k== mn)
            W++;
        if (k < mx && k > mn)
        {
            cout << "Incorrect";
            break;
        }
        if ((n-m) == 1 && W < 1)
            cout << "Incorrect";
        else
            cout << "Correct";
        i++;
    }
    //system("pause");
}

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>

using namespace std;

    int n, m, mn, mx, k, s;

int main(){
    s = 0;
    bool bo;
scanf("%d %d %d %d",&n,&m,&mn,&mx);
if(m > n){
         printf("Incorrect");
         return 0;
         }
else {
     if(n == 1){
               mn = -1;
               for(int i = 0; i < m; i++){
               scanf("%d",&k);
               bo = true;
               if(k != mn && mx != k)bo = false;
               if(bo == true) s++;
               }
               if(s == m)printf("Correct");
                 else   printf("Incorrect");
               }
     if(n == 2){
                for(int i = 0; i < m; i++){
                scanf("%d",&k);
                bo = true;
                if(k != mn && k != mx)bo = false;
                if(bo == true) s++;
                }
               if(s == m)printf("Correct");
                    else printf("Incorrect");
               }
     if(n > 2){
     for(int i = 0; i < m; i++){
     scanf("%d",&k);
          bo = false;
          if(k >= mn  && mx >= k)bo = true;
          if(bo == true) s++;
          }
     if(s == m)printf("Correct");
          else printf("Incorrect");
     }
     }
return 0;
}

#include <cstdio>
#include <conio.h>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <iostream>

using namespace std;

#define REP(i,n) for(int i=0; i<n; i++)
#define RREP(i,n) for(int i=n-1; i>=0; i--)

int n,m,mn,mx;
int x[102],nn;
bool ok1=false,ok2=false,OK;

int main() {
  cin >> n >> m >> mn >> mx; nn=m;
  REP(i,m) {
    cin >> x[i];

    if(x[i]==mn) ok1=true;
    if(x[i]==mx) ok2=true;
  }

  if(ok1==false) nn++;
  if(ok2==false) nn++;

  if(nn<=n) cout << "Correct";
   else cout << "Incorrect";

return 0;
}

#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
using namespace std;
int main()
{
	int n,m,max,min,i,j,tm;
	while(~scanf("%d %d %d %d",&n,&m,&min,&max))
	{
		map<int,int>vis;
		//cout<<vis[2]<<" "<<vis[3]<<endl;
		vis[max]=1;vis[min]=1;
		int sum=2,ok=1,sum2=0;
		for(i=0;i<m;i++)
		{
			scanf("%d",&tm);
			if(vis[tm])
			{
				sum2++;
			}
			else
			{
				if(tm<max&&tm>min){vis[tm]=1; sum++;}
				else ok=0;
				//(!vis[tm]){if(tm==max||tm==min){vis[tm]=1; sum++;}
			}
		}
		//if(sum>n||sum+sum2<n||!ok)printf("Incorrect\n");
		//else printf("Correct\n");
		if(sum<=n&&sum+sum2>=n&&ok)printf("Correct\n");
		else printf("Incorrect\n");
	}
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main() {
	ios_base::sync_with_stdio(false);
	int n, m, max, min, a, c = 2, d = 0;
	bool prf = false, prfs = false;
	cin >> n >> m >> max >> min;
	for (int i = 1; i <= m; i++) {
		cin >> a;
		if (a!= max && a != min)
		c++;
		if (a == max || a == min)
		d++;
		if (a > max || a < min) {
			cout << "Incorrect";
			return 0;
		}
	}
	if (c == n)
		cout << "Correct";
		else if (c + d >= n && d!= 0)
		cout << "Correct";
		else
		cout << "Incorrect";
	return 0;
}

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>
#include <set>
using namespace std;
int main(){
    int n,m,mins,maxs,k,a,flag;
    multiset<int> s;
    cin>>n>>m>>mins>>maxs;
    k=n-m;
    while(m--){
        cin>>a;
        s.insert(a);
    }
    if(k>=2){
        if(*s.begin()>=mins&&*s.end()<=maxs) flag=1;
        else flag=0;
    }
    else if(k==1){
        if(*s.begin()!=mins&&*s.end()!=maxs) flag=0;
        else if(*s.begin()>=mins&&*s.end()<=maxs) flag=1;
        else flag=0;
    }
    else{
        if(*s.begin()!=mins||*s.end()!=maxs) flag=0;
        else if(*s.begin()>=mins&&*s.end()<=maxs) flag=1;
        else flag=0;
    }
    if(flag) cout<<"Correct\n";
    else cout<<"Incorrect\n";
    return 0;
}

/*#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>
using namespace std;
const int INF=1000001;
int visit[1022],n,m,st,en;
long long d[1022][2],w[1022][1022],l[1022][1022];
void Dijkstra(){
    memset(visit,0,sizeof(visit));
    int k,x,m[2],i;
    for(i=1;i<=n;i++) d[i][0]=d[i][1]=INF;
    d[st][0]=0;d[st][1]=0;
    for(k=0;k<n;k++){
        m[1]=m[0]=INF;
        for(i=1;i<=n;i++){
            if(visit[i]) continue;
            if(m[0]>d[i][0]) {m[0]=d[i][0];m[1]=d[i][1];x=i;}
            else if(m[0]==d[i][0]&&m[1]>d[i][1]) {m[0]=d[i][0];m[1]=d[i][1];x=i;}
        }
        visit[x]=1;
        for(i=1;i<=n;i++){
            if(visit[i]) continue;
            if(d[i][0]>(d[x][0]+l[x][i])) {d[i][0]=d[x][0]+l[x][i];d[i][1]=d[x][1]+w[x][i];}
            else if(d[i][0]==(d[x][0]+l[x][i])&&d[i][1]>(d[x][1]+w[x][1])) d[i][1]=d[x][1]+w[x][1];
        }
    }
}
int main()
{
    int i,j,u,v,a,b;
    while(cin>>n>>m,n||m){
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++){
                w[i][j]=INF;
                l[i][j]=INF;
            }
        for(i=0;i<m;i++){
            cin>>u>>v>>a>>b;
            if(a<l[u][v]) {l[u][v]=l[v][u]=a;w[u][v]=w[v][u]=b;}
            else if(a==l[u][v]&&b<w[u][v]) w[u][v]=w[v][u]=b;
        }
        cin>>st>>en;
        Dijkstra();
        cout<<d[en][0]<<" "<<d[en][1]<<"\n";
    }
    return 0;
}
*/

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<cstring>
#include<cstdlib>
#include<bitset>
using namespace std;

int main()
{
    int i,a[105],nr,caca=0;
    bool test1,test2;
    //freopen("date.in","r",stdin);
    //freopen("date.out","w",stdout);
    cin.sync_with_stdio(false);
    int n,m,min,max;
    cin>>n>>m>>min>>max;
    nr=n-m;
    test1=test2=0;
    for (i=1;i<=m;i++)
        cin>>a[i];
    for (i=1;i<=m;i++)
        if (a[i]==min)
            test1=1;
        else if (a[i]==max)
            test2=1;
    if (test1==1) caca++;
    if (test2==1) caca++;
    if (nr>=caca)
        cout<<"Correct\n";
    else cout<<"Incorrect\n";
    return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int i=0,n,m,min,max;
    cin >> n >> m >> min >> max ;
    int arr[m];
    for(int i=0;i<m;i++)
        cin >> arr[i];
    int cntr=0;
        for(int i=0;i<m;i++)
        {

        if(arr[i]==min || arr[i]==max)cntr++;
       else if(arr[i]<min || arr[i]>max) {cout << "Incorrect";return 0;}

    }
    if(cntr>=2 || n-m!=0)cout << "Correct";
    else cout << "Incorrect";

}

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
typedef long double ld;
#define pb push_back
#define X first
#define Y second
#define sz(v) (int)v.size()
using ord = tree<int, null_type, greater<int>, rb_tree_tag, tree_order_statistics_node_update>;

void solve();

main() {
	ios_base::sync_with_stdio(0), cin.tie(0);
#ifdef ONPC
	freopen("in.txt", "r", stdin);
#endif
	int t = 1;
	//cin >> t;
	while (t--) solve();
	return 0;
}

int n, m, mn, mx, mnn, mxx;

void solve() {
	cin >> n >> m >> mn	>> mx;
	mnn = 1e9 + 7;
	for (int i = 1; i <= m; ++i) {
		int x;
		cin >> x;
		mxx = max(mxx, x);
		mnn = min(mnn, x);
	}
	int cnt = 0;
	if (mxx > mx) {
		cout << "Incorrect\n";
		return;
	}
	if (mnn < mn) {
		cout << "Incorrect";
		return;
	}
	cnt = (mn != mnn) + (mx != mxx);
	if (cnt >= n - m) {
		cout << "Correct\n";
		return;
	}
	cout << "Incorrect\n";
}

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <cmath>
using namespace std;
int main()
{
    int n,m,maxi,mini,m1,h,g,arr[100];
    cin>>n>>m>>mini>>maxi>>m1;
h=n-m;
if(m1!=h)
    cout<<"Incorrect\n";
else if(h>=mini&&h<=maxi&&m1==h)
    cout<<"Correct\n";
else  if(h<mini||h>maxi)
    cout<<"Incorrect\n";

return 0;
}

#include<iostream>
using namespace std;
int main()
{
    int i,n, m,k, w,temp=0,temp1=0,temp2=0,min, max;
    cin >> n >> m >> min >> max;
    w = n - m;
    for ( i = 0; i < m; i++)
    {
        cin >> k;
        if (k == min)
        {
            temp1++;

        }
        else if (k == max)
        {
            temp2++;

        }
    }
    if (temp1 >= 1)
        temp1 = 1;
    if (temp2 >= 1)
        temp2 = 1;
    temp = temp1 + temp2;
    if (w >= (2 - temp))
        cout << "Correct";
    else
        cout << "Incorrect";
    return 0;
}

#include <iostream>
#include <cstdio>
#include <climits>
#include <algorithm>
#include <queue>
#include <cstring>
#include <cmath>
#include <vector>
#include <stack>
#include <set>
#include <map>
#include <deque>

using namespace std;

int main()
{
    int n,m,min,max;
    std::map<int, int> map;
    bool Correct = true;

	cin >> n >> m >> min >> max;

    map[min] = 1;
    map[max] = 1;

	for (int i = 0; i < m; ++i)
	{
        int m1;
		cin >> m1;
        if (m1 >= min && m1 <= max)
            map[m1] = 1;
        else
        {
            Correct = false;
            break;
        }
	}

    if (map.size() - 2 <= (n-m))
        Correct = false;

	(Correct)?cout << "Correct" << endl : cout << "Incorrect" << endl;
    return 0;
}

#include <cmath>
#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
#include <map>
#include <set>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <sstream>
#include <cstdio>

using namespace std;

#define mp make_pair
typedef long long llong;
typedef unsigned long long ullong;
typedef pair<int, int> PI;
typedef pair<PI, int> PII;
typedef vector<int> VI;
typedef vector<VI> VVI;
llong INF = (1LL<<62);

int main()
{
    ios_base::sync_with_stdio(false);
    // freopen("input.txt", "r", stdin);

    int n, m, mi, ma;
    cin >> n >> m >> mi >> ma;
    int sawmi = 0, sawma = 0;
    for(int i = 0; i < m; ++i){
        int x;
        cin >> x;
        if(x == mi) sawmi++;
        if(x == ma) sawma++;
    }
    int d = n - m;
    if(d >= 2-(sawmi + sawma))
        cout << "Correct" << endl;
    else
        cout << "Incorrect" << endl;
    return 0;
}

#include <iostream>
#include <math.h>
using namespace std;

int main()
{int n,m,min,max;
int arr[1000]={0};
cin>>n>>m>>min>>max;
bool found_min=false,found_max=false;
for (int i = 0; i < m; ++i)
 {
    cin>>arr[i];
    if (arr[i]==min)
    {
        found_min=true;
    }
    if (arr[i]==max)
    {
    found_max=true; /* code */
    }

 }
if (found_max && found_min)

{
    cout<<"Correct";return 0;
}

if ((!found_max && found_min) || (found_max && !found_min))

{
    if(n-m>0)
        cout<<"Correct";
    else
        cout<<"Incorrect";
    return 0;
}

if (!found_min && !found_max)
{
    if (n-m>1)
    {
        cout<<"Correct";
    }
    else
        cout<<"Incorrect";
    return 0;
}
    return 0;
}

#include <iostream>
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n,m,mini,maxi;
    cin>>n>>m>>mini>>maxi;
    bool mi = false,ma = false;
    for(int i = 0; i < m; i++){
        int x;
        cin>>x;
        if(x == mini)mi=true;
        if(x == maxi)ma = true;
    }
    n = n - m - (2 - mi - ma);
    if(n < 0){
        cout<<"Incorrect";
    }else{
        cout<<"Correct";
    }
    return 0;
}

#include <iostream>
#include <cstring>
#include <queue>
#include <stdio.h>
#include <cmath>
#include <sstream>
#include <cstdio>
#include <algorithm>
#include <cstdio>
#include <set>
#include <cstdlib>
#include <vector>
#include <cctype>
#include <utility>
#include <map>
#include <string>
using namespace std;

int conversion(string p){ int o; o=atoi(p.c_str()); return o; }
string toString(int h){ stringstream ss; ss<<h; return ss.str(); }
long long gcd(long long a,long long b) {return (b==0 ? a : gcd(b,a%b));}
int lcm(int a,int b) {return (a*(b/gcd(a,b))); }

int main()
{
    ios::sync_with_stdio(1);

    #ifndef ONLINE_JUDGE
    freopen("D:/input.txt","r",stdin);
    //freopen("D:/output.txt","w",stdout);
    #endif

    int n,m,mi,ma,x;
    cin>>n>>m>>mi>>ma;
    set<int> M;
    while(cin>>x)
    {
        M.insert(x);
    }
    if(n-m==ma+1-mi-M.size()) cout<<"Correct"<<endl;
    else cout<<"Incorrect"<<endl;
}

#include <iostream>
using namespace std;
int n,mi,ma,m,t;
bool e,v;
int main(){
    cin>>n>>m>>mi>>ma;
    e=0; v=0;
    for(int i=0; i<m; i++){
        cin>>t;
        if(t>ma || t<mi){
            cout<<"incorrect\n";
            return 0;
        }
        if(t==ma) v=1;
        if(t==mi) e=1;
    }
    if(e==1 && v==1)cout<<"correct\n";
    else{

        if(v==1 && m<n) e=1;
        if(e==1 && m<n) v=1;
        if(m<=n-2){
            e=1;
            v=1;
        }
        if(e==1 && v==1) cout<<"correct\n";
        else cout<<"incorrect\n";
    }
    return 0;
}

/******************************************
 	AUTHOR : PRATIK
 INSTITUTION : BITS PILANI HYDERABAD CAMPUS
******************************************/

#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<int> vi;
typedef multiset<int> ms;
typedef set<int> s;
typedef vector<double> vid;
typedef multiset<double> msd;
typedef set<double> sd;
#define sp setprecision
#define N 100005
#define MOD 1000000007
#define dd double
#define rep(i, n) for(int i = 0; i < n; i++)
#define REP(i,a,b) for(int i=a;i<b;i++)
#define rep1(i,b) for(int i=1;i<=b;i++)
#define pb push_back
#define mp make_pair
#define clr(x) x.clear()
#define sz(x) ((int)(x).size())
#define F first
#define S second

void fastscan(ll &number)
{
    //variable to indicate sign of input number
    bool negative = false;
    register int c;

    number = 0;

    // extract current character from buffer
    c = getchar();
    if (c=='-')
    {
        // number is negative
        negative = true;

        // extract the next character from the buffer
        c = getchar();
    }

    // Keep on extracting characters if they are integers
    // i.e ASCII Value lies from '0'(48) to '9' (57)
    for (; (c>47 && c<58); c=getchar())
        number = number *10 + c - 48;

    // if scanned input has a negative sign, negate the
    // value of the input number
    if (negative)
        number *= -1;
}

// Function Call

int main()
{

	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	//ios_base& scientific (ios_base& str);

	ll a,b,c,d;
	cin>>a>>b>>c>>d;
	ll p;
	cin>>p;
	ll cu=0;
	if(p==c) cu++;
	if(p==d) cu++;
    if(cu==2) {cout<<"Correct"; return 0;}
    if(a-b==2){cout<<"Correct"; return 0;}
    if(a-b==1 && cu==1) {cout<<"Correct"; return 0;}
    else cout<<"Incorrect";

	return 0;
}

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <map>
#include <queue>
#include <stack>
#include <iostream>
using namespace std;

int main ()
{
	int n, m, min, max;
	int a[100];
	while(scanf("%d%d%d%d",&n,&m,&min,&max) != EOF)
	{
		int flag = 1;
		for(int i = 0 ; i < m ; i ++)
		{
			scanf("%d",&a[i]);
			if(a[i] < min || a[i] > max)
				flag = 0;
		}
		if(n == 1)
		{
			flag = 0;
		}
		else if(n == 2)
		{
			if(a[0] != min && a[0] != max)
				flag = 0;
		}
		if(flag == 1)
		{
			printf("Correct\n");
		}
		else
		{
			printf("Incorrect\n");
		}
	}
	return 0;
}

#include<stdio.h>

int main() {

    int n,m,min,max,t1,t2,i;
    int t[100];

    scanf("%d", &n);
    scanf("%d", &m);
    scanf("%d", &min);
    scanf("%d", &max);

    for (i=0 ; i<m ; i++) {
        scanf("%d", &t[i]);
        }

    for (i=0 ; i<m ; i++) {
        if ((t[i] == min) && ((t[i] >= min) && (t[i] <= max)))
           t1 = 1;

        if ((t[i] == max) && ((t[i] >= min) && (t[i] <= max)))
           t2 = 1;
        }

    if (m == 1) {
       if ((t1 == 1) || (t2 == 1))
           printf("Correct");
       else
           printf("Incorrect");
       }
    else {
         if ((t1 == 1) && (t2 == 1))
             printf("Correct");
         else
             printf("Incorrect");
         }

    return 0;

}

#include<iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
     int n, m, min, max,i;
    scanf("%d %d %d %d", &n, &m, &min, &max);
    int ok=1,cnt=0,num[110];
    for ( i=0;i<m;i++)
    {
        int tmp;
        scanf("%d", &tmp);
        if (tmp<min||tmp>max)
            ok=0;
        else
            num[cnt++]=tmp;
    }
    if (!ok)
    {
        puts("Incorrect");
        return 0;
    }
    for ( i=0; i<cnt; i++)
    {
        if (num[i]==min)
            break;
        if (i==cnt-1)
            cnt++;
    }
    for ( i=0; i<cnt; i++)
    {
        if (num[i]==max)
            break;
        if (i==cnt-1)
            num[cnt++]=max;
    }
    if (cnt>n)
        puts("Incorrect");
    else
        puts("Correct");
    return 0;
}

#include<cstdio>
int n,m,nmin,nmax,i,j,kmin,kmax,a;
int main(){
    scanf("%d%d%d%d",&n,&m,&nmin,&nmax);
    for(i=1;i<=m;i++){
        scanf("%d",&a);
        if(a==nmin)
            kmin=1;
        if(a==nmax)
            kmax=1;
    }
    n-=m;
    if(kmin==0)
        n--;
    if(kmax==0)
        n--;
    if(n>=0)
        printf("Correct");
    else
        printf("Incorrect");

    return 0;
}

#include <algorithm>
#include <bitset>
#include <iostream>
#include <sstream>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <ctime>
#include <cmath>

using namespace std;

#define rep(a, b, e) for(int a = (int) b; a < (int) e; ++a)
#define clr(a, val) memset(a, val, sizeof(a))
#define debug(a) cerr << #a << ": " << a << endl;
#define debugv(b, t) cerr << #b << ":\n"; rep(countvec, 0, t) { cerr << b[countvec] << '\t'; } cerr << endl;
#define debugm(c, t, u) cerr << #c << ":\n"; rep(countmat, 0, t) { rep(countbb, 0, u) { cerr << c[countmat][countbb] << '\t'; } cerr << endl; }
#define sorta(a) sort(a, 0, sizeof(a))
#define sortv(x) sort((x).begin(),(x).end())
#define sortr(v) sort((v).rbegin(),(v).rend())
#define INF 1<<30
#define MOD 1000000007
#define MAXN 8

int conversion(string p){ int num; num=atoi(p.c_str()); return num; }
string toString(int h){ stringstream ss; ss<<h; return ss.str(); }
long long gcd(long long a,long long b) { return (b==0 ? a : gcd(b,a%b));}
long long lcm(long long a,long long b) { return (a*(b/gcd(a,b))); }

vector<int> V;

int main() {
    #ifndef ONLINE_JUDGE
        ios::sync_with_stdio(true);
        freopen("D:/Sublime/in.txt","r",stdin);
        freopen("D:/Sublime/out.txt","w",stdout);
        clock_t start = clock();
    #endif

        int n,m,minimo,maximo;
        cin>>n>>m>>minimo>>maximo;
        rep(i,0,m){
            int a; cin>>a;
            V.push_back(a);
        }
        int a=0,b=0;
        rep(i,0,V.size()) {
            if (V[i]==minimo) a++;
            else if (V[i]==maximo) b++;
        }
        int cant=n-m;
        if(a>=1 && b>=1){
            cout<<"Correct"<<endl;
        }
        else if((a==0 && b>=1) || (a>=1 && b==0)){
            if(cant>=1) cout<<"Correct"<<endl;
            else if(cant<1) cout<<"Incorrect"<<endl;
        }
        else if(a==0 && b==0){
            if(cant>=2) cout<<"Correct"<<endl;
            else if(cant<2) cout<<"Incorrect"<<endl;
        }

    #ifndef ONLINE_JUDGE
        fprintf(stderr, "\ntime=%.3lfsec\n", 0.001 * (clock() - start));
    #endif
    return 0;
}

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#include <cstdio>
__int64 a[105],b[33],n,m,i,j,flag[33];
int main(){
    scanf("%d%d",&n,&m);
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    for(i = 0; i < n; i++)
        scanf("%I64d",&a[i]);
    for(j = 0; j < m; j++){
        int c;
        scanf("%d",&c);
        c--;
        b[j] = a[c];
        a[c] = 0;
    }
    sort(b,b+m);
    memset(flag,0,sizeof(flag));
    __int64 ans = 0;
    for(i = 0; i < n;i++)
        ans += a[i];
    for(i = 0; i < m; i++){
        if(ans > b[i] && flag[i] == 0){
            ans *= 2;
            flag[i] = 1;
        }
        else{
            for(j = m - 1; j >= 0; j-- )
                if(flag[j] == 0){
                    ans += b[j];
                    flag[j] = 1;
                    i--;
                    break;
                }
        }
    }
        printf("%I64d\n",ans);
        return 0;
}

#include <map>
#include <set>
#include <queue>
#include <stack>
#include <cmath>
#include <ctime>
#include <cstdio>
#include <vector>
#include <string>
#include <utility>
#include <cstdlib>
#include <climits>
#include <cstring>
#include <iostream>
#include <algorithm>

#define xx first
#define yy second
#define mp make_pair
#define pb push_back
#define Pair pair<int, int>
using namespace std;
int main(){
  int n,m,min,max,ti,k;
  cin>>n>>m>>min>>max;
  cin>>ti;
  k=n-m;
  if(1<=n,m,min,max,ti<=100){
  if(m<n){
    if(min<max){
  if(ti==k) cout<<"Correct"<<endl;
  else cout<<"Incorrect"<<endl;
  }
  else cout<<"Incorrect"<<endl;
  }
  else cout<<"Incorrect"<<endl;
  }
  else cout<<"Incorrect"<<endl;
}

//
//  main.cpp
//  A
//
//  Created by Ming on 4/22/14.
//  Copyright (c) 2014 ming. All rights reserved.
//

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

bool t[105];

int main()
{
    int n,m,max,min,temp,kind,res;
    bool flag;
    bool m1,m2;
    while (~scanf("%d%d%d%d",&n,&m,&min,&max)) {
        res=max-min+1;

        kind=2;
        flag=true;
        m1=m2=false;
        memset(t, false, sizeof(t));
        t[min]=t[max]=true;

        for (int i=0; i<m; i++) {
            scanf("%d",&temp);

            if (flag) {

            if (temp>=min&&temp<=max) {

                if (temp==min) {
                    m1=true;
                }
                if (temp==max) {
                    m2=true;
                }

                if (!t[temp]) {
                    t[temp]=true;
                    kind++;
                }

            }
            else{
                flag=false;
            }

            }
        }

        if(flag){
            int num=n-m-2;
            if (m1) num++;
            if (m2) num++;

            if(kind+num>=n)
            printf("Correct\n");
            else printf("Incorrect\n");
        }
        else printf("Incorrect\n");

    }

    return 0;
}

#include <iostream>
#include<bits/stdc++.h>

using namespace std;

int main()
{
    int n,m,imax,imin;
    cin>>n>>m>>imin>>imax;
    int a[m],i,j,temp=2;
    for(i=0;i<m;i++){
        cin>>a[i];
    }
    for(j=0;j<m;j++){
            if(a[j]==imax){
                temp--;
            }
            else if(a[j]==imin){
                temp--;
            }
    }

    if(temp<=n-m)
        cout<<"Correct";
    else
        cout<<"Incorrect";
    return 0;
}

#include <map>
#include <set>
#include <cmath>
#include <stack>
#include <queue>
#include <cstdio>
#include <vector>
#include <cstring>
#include <sstream>
#include <iostream>
#include <algorithm>

using namespace std;

typedef long long ll;
typedef pair<int, int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;

#define debug(a) cout<< #a << " = " <<a<<endl;
#define INPUT(file) freopen(file".inp","r",stdin);
#define OUTPUT(file) freopen(file".out","w",stdout);

#define rep(i,n) for(int i=0; i<n; i++)
#define fr(i,a,b) for(int i=a; i<=b; i++)

#define ff first
#define ss second
#define mp make_pair
#define pb push_back

#define MaxInt 2147483647
#define INF 12512523232344LL
#define pi 3.1415926535897932

map<int,bool> Map;
int n,m,Min,Max;
int a[10000];
int main()
{

    //INPUT("INPUT");
    //OUTPUT("OUTPUT");

    Map.clear();

    cin>>n>>m>>Min>>Max;
    Map[Min] = true;
    Map[Max] = true;

    rep(i,m)
    {
         cin>>a[i];
         //if(Map[a[i]] && a[i] != ) ok = false;
         Map[a[i]] = true;
    }

    if(Map.size() > n ) cout<<"Incorrect"<<endl;
    else cout<<"Correct"<<endl;

return 0;
}

//=============================================================
// Name        : 413a
// Date        : Tue Jun  4 17:35:49 CST 2019
// Author      : landcold7
// Description : Actions speak louder more than words
//=============================================================
#include <bits/stdc++.h>
using namespace std;

#define x first
#define y second
#define sz(x) ((int)(x).size())

#ifndef _has_trace
#define trace(...)
#endif
typedef long long ll;
typedef vector<int> vi;

void solve() {
  int n, m, mi, mx;
  cin >> n >> m >> mi >> mx;
  vector<int> a(m);
  for (int i = 0; i < m; ++i) {
    cin >> a[i];
  }
  int cnt = 0;
  if (*max_element(a.begin(), a.end()) == mx) {
    cnt++;
  }
  if (*min_element(a.begin(), a.end()) == mi) {
    cnt++;
  }
  if (n - m < 2 - cnt) {
    cout << "Incorrect\n";
  } else {
    cout << "Correct\n";
  }
}

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  solve();
  return 0;
}

#include<iostream>

using namespace std;

int main()
{
	int n, k;
	cin >> n >> k;
	if (n%2 && (n - 1) / 2 != k)
	{
		cout << -1 << endl;
	}
	else
	{
		int sum = 0;
		for (int x = 0; x < n; x++) sum += x;
		cout << sum << endl;
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < k; j++)
			{
				cout << i+1 << " " << ((i + j + 1) % n)+1 << endl;
			}
		}
	}
	cin >> n;

}

#include<bits/stdc++.h>
using namespace std;
int main()
{
   int n,m,mini,maxi;
   cin>>n>>m>>mini>>maxi;
   int a[101]={0};
   for(int i=0;i<m;i++)
   {
       int x;
       cin>>x;
       a[x]++;
   }
   int diff=n-m;
   int f=0;
   if(diff>=2)
   f=1;
   else
   {
       if(diff==1)
       {
           if(a[mini]>0 || a[maxi]>0)
           f=1;
       }
       else if(diff==0)
       {
           if(a[mini]>0 && a[maxi]>0)
           f=1;
       }
   }
   if(f==1)
   cout<<"Correct\n";
   else
   cout<<"Incorrect\n";
    return 0;

}

#include <cstdio>
#include <conio.h>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <iostream>

using namespace std;

#define REP(i,n) for(int i=0; i<n; i++)
#define RREP(i,n) for(int i=n-1; i>=0; i--)

int n,m,mn,mx;
int A,nn;
int a,b;
bool ok1=false,ok2=false,OK;

int main() {
  cin >> n >> m >> mn >> mx; nn=m;

  REP(i,m) {
    cin >> A;

    if(A==mn) ok1=true,a++;
    if(A==mx) ok2=true,b++;
  }

  if(m>mn or n<mx) {cout << "Incorrect"; return 0;}

  if(ok1==false) nn++;
  if(ok2==false) nn++;

  if(nn<=n) cout << "Correct";
   else cout << "Incorrect";

return 0;
}

#include<iostream>
#include<string>
#include<map>
#include<algorithm>
#include<set>
#include<vector>
#include<cstring>
#include<queue>
#define ll long long
#define mp make_pair
using namespace std;
ll a[100100];
int main()
{
	string s;
	string t;
	cin >> s >> t;
	if (t.length() > s.length())
	{
		cout << -1;
		return 0;
	}
	if (s.length() > t.length())
	{
		vector<char>d;
		for (int i = 0; i < s.length(); i++)d.push_back(s[i]);
		sort(d.begin(), d.end());
		for (int i = 0; i < d.size(); i++)cout << d[i];
		return 0;
	}

	return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define  fast()      ios :: sync_with_stdio(false); cin.tie(0);
#define  ll             long long int
#define  ull            unsigned long long int
#define     sz(x)       (int)x.size()
#define  ld             long double
#define  vi             vector<int>
#define vl              vector<long long>
#define vc              vector<char>
#define vs              vector<string>
#define vp              vector< pair<ll,ll> >
#define sl              set<long long>
#define sc              set<char>
#define sts             stack<string>
#define max_3(a,b,c)    max(a, max(b,c))
#define max_4(a,b,c,d)  max(a,max(b,max(c,d)))
#define min_3(a,b,c)    min(a, min(b,c))
#define min_4(a,b,c,d)  min(a,min(b,min(c,d)))
#define gcd(a,b)        __gcd(a,b)
#define lcm(a,b)        (a*b)/gcd(a,b)
#define pi              2*acos(0.0)
#define N               100006
#define in              1234567890;
int main()
{
    fast()
    /*freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);*/
    ll n,m,mn,mx,i,c=0,d;
    cin>>n>>m>>mn>>mx;
    for(i=1;i<=m;i++){
        cin>>d;
        if(d>mn&&d<mx) c++;
        if(d<mn||d>mx){cout<<"Incorrect";return 0;}
    }
    if(c+2<=m) cout<<"Correct";
    else cout<<"Incorrect";
}

#include <algorithm>
#include <cctype>
#include <cstdio>
#include <cstring>
#include <functional>
#include <iostream>
#include <unistd.h>
#include <utility>
#include <vector>
#include <map>

using namespace std;

int main(){
    int i,z,j,k,t,h,ans = 0;
    int a,b,c,d;
    int n,m,min,max;
    scanf("%d%d%d%d",&n,&m,&min,&max);
    int a_min = 1000, a_max = 0;
    int a_temp;
    for(i=0;i<m;i++){
        scanf("%d",&a_temp);
        if( a_temp < a_min )
            a_min = a_temp;
        else if( a_temp > a_max )
            a_max = a_temp;
    }

    int how_many_more_needed = 2;
    //How much correct
        if( a_min == min)
            how_many_more_needed--;
        if( a_max == max )
            how_many_more_needed--;

    if( (n-m) >= how_many_more_needed )
        printf("Correct");
    else
        printf("Incorrect");

    return 0;
}

#include <bits/stdc++.h>
using namespace std;

#define start          ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define nl            endl;
#define end_            system("pause");
#define sz(v)            ((int)((v).size()))
#define sc(x)            scanf("%d",&x)
#define sc2(x,y)         scanf("%d%d",&x,&y)
#define sc3(x,y,z)       scanf("%d%d%d",&x,&y,&z)
#define sc4(x,y,z,a)     scanf("%d%d%d%d",&x,&y,&z,&a)
#define sc5(x,y,z,a,b)   scanf("%d%d%d%d%d",&x,&y,&z,&a,&b)
#define sc6(x,y,z,a,b,c) scanf("%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c)
#define scl(x)           scanf("%lld",&x)
#define all(v) v.begin(),v.end()
#define lp(i,n)        for(int i=0;i<n;i++)
#define lp1(i,f,l)     for(int i=f;i<l;i++)
#define R_(s)         freopen(s, "r", stdin)
#define W_(s)        freopen(s, "w", stdout)
#define R_W R_("input.txt"),W_("output.txt")
#define PI           acos(-1)
#define INF             1<<30
#define mp(a,b) make_pair(a,b)
typedef string            S;
typedef long long         ll;
typedef long long int     lli;
typedef pair <int, int>   pii;
typedef pair<S, int>     si;
typedef pair<int, S>     is;
typedef pair<char, int>  chi;
typedef pair<S, S>       SS;
typedef vector<pii>        vii;
typedef vector<int>       vi;
typedef vector<vi>       vvi;
typedef vector<S>        vs;
typedef vector<ll>       vll;
typedef vector<vll>     vvll;
ll pw(ll b, ll p){ if (!p) return 1; ll sq = pw(b, p / 2); sq *= sq; if (p % 2) sq *= b; return sq; }
ll gcd(ll a, ll b)  { return (b == 0 ? a : gcd(b, a % b)); }
ll sd(ll x)  { return x<10 ? x : x % 10 + sd(x / 10); }
ll lcm(ll a, ll b){ return ((a*b) / gcd(a, b)); }
vector<ll> get_divisors(ll n){vector<ll> arr;ll i=1;for(i;i*i<=n;i++){if(n%i==0)arr.push_back(i),arr.push_back(n/i);}return arr;}
int dx[4]={0 , 1 , 0 , -1};
int dy[4]={1 , 0 , -1 , 0};

int main()
{
	int n,m,mn,mx,a,arr[101]={0};
	cin>>n>>m>>mn>>mx;
	bool b=1;
	lp(i,m)
	{
	    cin>>a;
	    arr[a]++;
	    if(a<mn||a>mx||(n==2&&a!=mn&&a!=mx)||m>n||(arr[a]>1&&a!=mn&&a!=mx))
            b=0;
	}
	cout<<(b?"Correct":"Incorrect")<<endl;
	return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n,m,min_,max_,t;
    int A[107];
    bool ch_up=0,ch_dn=0;
    cin>>n>>m>>min_>>max_;
    for(int i=0;i<m;i++)
    {
        int r;
        cin>>r;
        if(r==min_)ch_dn=1;
        if(r==max_)ch_up=1;
    }
    if(ch_up and ch_dn)
        cout<<"Correct\n";
    else
    {
        int r=0;
        if(ch_up or ch_dn)r++;
        //cout<<r<<endl;
        if(n-m<(2-r)) cout<<"Incorrect\n";
        else cout<<"Correct\n";
    }
    return 0;
}

#include <functional>
#include <algorithm>
//#include <memory.h>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <set>
#include<cstdlib>
#include<math.h>
#include<iostream>
#include<limits.h>
#include<map>
using namespace std;
typedef long long Int;
#pragma comment(linker,"/STACK:102400000,102400000")
/*

2 1 1 3
2

Output
Incorrect

*/
const int Max=102;
int n,m;
bool havemax,havemin;
int tmax,tmin;
bool flag;
int main()
{
	scanf("%d%d%d%d",&n,&m,&tmin,&tmax);
	while(m--)
	{
		int a;
		scanf("%d",&a);
		if(a==tmax){havemax=1;continue;}
		if(a==tmin){havemin=1;continue;}
		if(a<tmin||a>tmax)flag=1;
	}
	if(flag||m+2-havemin-havemax>n){puts("Incorrect");return 0;}
	puts("Correct");
	//system("pause");
}

// dataRecovery.cpp : Defines the entry point for the console application.
//

#include <iostream>

using namespace std;

int main()
{
    int n,m,min,max,i;
    bool flag=false;
    int t[101];

    cin>>n>>m>>min>>max;
    int tmp;
    tmp=n-m;
    for(i=0;i<m;i++){
        cin>>t[i];
        if(t[i]!=min&&t[i]!=max){
            if(tmp==1){
              flag=0;
              //break;
            }
            else{
                flag=1;
                break;
            }
            }
        else{
              flag=1;
              break;
            }

    }
    if(flag==1)
    {
        cout<<"Correct"<<endl;
        return 0;
    }
    else{
        cout<<"Incorrect"<<endl;
        return 0;
    }

}

#include <bits/stdc++.h>

using namespace std;

// numbers
const int N = 1e5 + 7;
#define MOD 1000000007
#define BMOD 1000000000000000007
#define primemod 998244353
//shortforms
#define ff first
#define ss second
#define ll long long int
#define pb(a) push_back((a))
#define pob() pop_back()
//max and min and sum
#define maxv(all,A) *max_element(A.begin(),A.end())
#define maxa(a,i,j,m,p) fof(k,i,j+1){if(a[k]>m){m=a[k];p=k;}}
#define mina(a,i,j,m,p) fof(k,i,j+1){if(a[k]<m){m=a[k];p=k;}}
#define minv(all,A) *min_element(A.begin(),A.end())
#define sumv(all,A,a) accumulate(A.begin(), A.end(),a)
//for loops
#define fof(i,a,n) for(auto i=a;i<(n);i++)
#define fob(i,n,a) for(auto i=n-1;i>=a;i--)
#define fom(i,a,n) for(auto i=a;i!=(n);i++)
//sorting
#define as(all,A) sort((A).begin(),(A).end())
#define ds(all,A,x) sort((A).begin(),(A).end(),greater<x>())
//input
#define input(A,n) fof(i,0,n){cin>>A[i];}
#define mai(n,M) fof(i,0,n){ll  a; cin>>a;  if(M.find(a)==M.end()){ M.mk_pair(ll,ll,a,1); } else { M[a]++;} }
#define mk_pair(x,y,a,b) insert(pair<x,y >(a,b))
//output
#define in(a) emplace(A.begin(),a)
#define debug(a) cerr<<a<<" ";
#define dispve(A,a,n) fof(i,a,n){cout<<A[i]<<" ";}
#define dismp(m) for(auto x : m){ cout<<x.ff<<" "<<x.ss<<"\n"; }
//code begins
void solve()
{
	ll n,m,mn,mx;
	cin>>n>>m>>mn>>mx;
	vector<ll>a(m);
	input(a,m);
	ll x=minv(all,a);
	ll y=maxv(all,a);
	if(x<mn||y>mx){
		cout<<"incorrect";
		return;
	}
	if(x!=mn)
	a.pb(mn);
	if(y!=mx)
	a.pb(mx);
	if(a.size()>n)
	cout<<"incorrect";
	else
	cout<<"correct";

}
//code ends
void template1 ()
{
	ll t;
	cin>>t;
	while(t--)
	{
		solve();
		cout<<"\n";
	}
}
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	//template1();
	solve();cout<<"\n";
	return 0;
}

#include<bits/stdc++.h>

using namespace std;

int main()
{
    int n, m, mn, mx;
    cin >> n >> m >> mn >> mx;
    int _mn = INT_MAX, _mx = INT_MIN;
    for(int k = 0; k < m; k++)
    {
        int i;
        cin >> i;
        _mn = min(_mn, i);
        _mx = min(_mx, i);
    }

    bool b1 = _mn == mn && _mx == mx;
    bool b2 = _mn > mn + _mx < mx <= n - m;
    bool b3 = _mn < mn || _mx > mx;

    if (!b3 && (b1 || b2))
        cout << "Correct";
    else
        cout << "Incorrect";

    return 0;
}

/*int div(int n)
{
    int cnt = 0;
    for (int i = 2; i*i<=n; i++) {
        if (n % i == 0) {

                return i;
        }
    }
    return n;
}   */

#include<bits/stdc++.h>
#include<string>
using namespace std;

int main()
{
   int n,m,mn,mx;
   cin>>n>>m>>mn>>mx;

   vector<int>a;
   for(int i=0;i<m;i++)
   {  int x;
       cin>>x;
       a.push_back(x);

   }

   sort(a.begin(),a.end());

   int x1=a.front();
   int y1=a.back();

   if(n-m>=2)
   {
       cout<<"Correct";
   }
   else if(m==n&&x1==mn&&y1==mx)
   {
       cout<<"Correct";
   }
   else if(n-m==1&&((x1==mn&&y1<=mx)||(y1==mx&&x1>=mn)) )
   {
       cout<<"Correct";
   }
   else
   {
       cout<<"Incorrect";
   }

    return 0;
}

#include<iostream>
using namespace std;
int main()
{
    int i,n, m,k, w,temp=0,temp1=0,temp2=0,min, max;
    cin >> n >> m >> min >> max;
    w = n - m;
    for ( i = 0; i < m; i++)
    {
        cin >> k;
        if (k == min)
        {
            temp1++;

        }
        else if (k == max)
        {
            temp2++;

        }
    }
    if (temp1 >= 1)
        temp1 = 1;
    if (temp2 >= 1)
        temp2 = 1;
    temp = temp1 + temp2;
    if (w >= (2 - temp))
        cout << "Correct";
    else
        cout << "Incorrect";
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,mi,ma;
    cin>>n>>m>>mi>>ma;
    int a[m];
    for(int i=0;i<m;i++) cin>>a[i];
    int minn=a[0];
    for(int i=0;i<m;i++)
    {
        if(a[i]<minn)
            minn=a[i];
    }
    int maxx=a[0];
    for(int i=0;i<m;i++)
    {
        if(a[i]>maxx)
            maxx=a[i];
    }
    if(minn<mi || maxx>ma)
        cout<<"Incorrect";
    if(n-m>=2) cout<<"Correct";
    if(n-m==1 && (minn==mi||maxx==ma)) cout<<"Correct";
    else
        cout<<"Incorrect";
    return 0;
}

#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<list>
#include<set>
#include<map>
#include<algorithm>
#include<iterator>
#include<numeric>

using namespace std;

int main(void)
{
    int n,m,mina,maxa,a,found1=0,found2=0,i;
    scanf("%d%d%d%d",&n,&m,&mina,&maxa);
    for(i=1;i<=m;i++)
    {
        scanf("%d",&a);
        if(a==mina)
        found1=1;
        if(a==maxa)
        found2=1;
    }
    if(found1 && found2)
    {
        printf("Correct");
        return 0;
    }
    else if(found1 || found2)
    {
        if(n-m>=1)
        {
            printf("Correct");
            return 0;
        }
        else
        {
            printf("Incorrect");
            return 0;
        }
    }
    else
    {
        if(n-m>=2)
        {
            printf("Correct");
            return 0;
        }
        else
        {
            printf("Incorrect");
            return 0;
        }
    }

    return 0;
}

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
	int n, m, Max, Min;
	cin >> n >> m >> Min >> Max;
	int *mas = new int [m];
	for (int i = 0; i < m; i++){
		cin >> mas[i];
	}

	bool isTrue = true;

	sort(&mas[0], &mas[m]);
	if (n - m == 1 && mas[0] != Min && mas[n - 1] != Max){
		isTrue = false;
	} else {
		for (int i = 0; i < m; i++){
			if (mas[i] < Min || mas[i] > Max){
				isTrue = false;
				break;
			}
		}
	}

	if (isTrue){
		cout << "Correct" << endl;
	} else {
		cout << "Incorrect" << endl;
	}
}

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<iostream>
#include<string>
#include<map>
#include<set>
#include<algorithm>
#include<list>
using namespace std;
int t[102];
int main()
{
    int n,m,min,max,h;
    bool f = 1;
    cin>>n>>m>>min>>max;
    for(int i = 0;i < m;i++){
    	cin>>t[i];
    }
    sort(t,t+m);
    if(n == 2){
    	for(int i = 0;i < m;i++){
    		if((t[i] > max&&t[i] > min) || (t[i] != min && t[i] != max))
    		f = 0;
    		else f = 1;
    	}
    }
    else if(n > 2){
    	for(int i = 0;i < m;i++){
    	if(t[i] < min || t[i] > max)
    	{
    		f = 0;break;
    	}
    	else f = 1;
    	}
    }
    if(f == 1)    cout<<"Correct"<<endl;
    else cout<<"Incorrect"<<endl;

}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,mi,ma,i,a[105]={0},k=0;
    scanf("%d%d%d%d",&n,&m,&mi,&ma);
    for(i=0;i<m;i++)
        scanf("%d",&a[i]);
    for(i=0;i<m;i++){
        if(a[i]<mi||a[i]>ma)
            return 0*printf("Incorrect");
        if(a[i]>=mi&&a[i]<=ma)
            k++;
    }
    if(k<=n)
        printf("Correct");
    else
        printf("Incorrect");
}

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<limits>
#include<map>

using namespace std;

#define MAX(a,b) ((a>b)? a:b)
#define MIN(a,b) ((a<b)? a:b)

int main(){
    long n, m, mn, mx;
    cin >> n >> m >> mn >> mx;
    int mn1 = mn + 1, mx1 = mx - 1, x;
    for (int i = 0; i < m; i++){
        cin >> x;
        mn1 = MIN(mn1, x);
        mx1 = MAX(mx1, x);
    }
    if ((mn1 == mn && mx1 == mx) ||
        ((mn1 == mn || mx1 == mx) && n - m >= 1) ||
        (n - m >= 2)){
        cout << "Correct\n";
    }
    else{
        cout << "Incorrect\n";
    }

}

#include<cstdio>

using namespace std;

int main()
{
    int n, m, mi, ma;
    int a[107] = {0}, b[107] = {0};
    int i, j;
    scanf("%d%d%d%d", &n, &m, &mi, &ma);
    for(i = 1; i <= m; i++){
        scanf("%d", &a[i]);
    }
    if(n < m){
        printf("Incorrect\n");
        return 0;
    }
    if(n - m == 1){
        if(m == 1){
            if(a[1] != ma && a[1] != mi){
                printf("Incorrect\n");
                return 0;
            }
        }
        else{
            for(j = 1; j <= n; j++){
                if(a[j] == mi){
                    b[0] = 1;
                }
                if(a[j] == ma){
                    b[1] = 1;
                }
                if(a[j] > ma || a[j] < mi){
                    printf("Incorrect\n");
                    return 0;
                }
            }
        }
    }
    else if(n == m){
        for(j = 1; j <= n; j++){
            if(a[j] == m){
                b[0] = 1;
            }
            if(a[j] == ma){
                b[1] = 1;
            }
            if(a[j] > ma || a[j] < mi){
                printf("Incorrect\n");
                return 0;
            }
        }
        if(b[0] == 1 && b[1] == 1){
            printf("Correct\n");
            return 0;
        }
        else{
            printf("Incorrect\n");
            return 0;
        }
    }
    else{
        for(i = 1; i <= m; i++){
            if(a[i] > ma || a[i] < mi){
                printf("Incorrect\n");
                return 0;
            }
        }
    }
    printf("Correct\n");
    return 0;
}

#include <iostream>

#include <utility>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <algorithm>
#include <cmath>

#include <cstdio>
#include <limits>
#include <numeric>

typedef std::vector<int> VectorInt;
typedef std::vector<VectorInt> VectorInt2D;

typedef std::map<int, int> MapInt;

typedef std::set<int> SetInt;

int main()
{
    int n;
    int m;
    int minN;
    int maxN;
    int minM = std::numeric_limits<int>::max();
    int maxM = std::numeric_limits<int>::min() ;

    std::cin >> n >> m >> minN >> maxN;

    for (int i = 0; i < m; ++i)
    {
        int newM;
        std::cin >> newM;
        minM = std::min(newM, minM);
        maxM = std::min(newM, maxM);
    }
    if ((minN == minM || maxN == maxM) ||
        (minM > minN && maxM < maxN && n - m > 1))
        std::cout << "Correct";
    else
        std::cout << "Incorrect";

    return 0;
}

#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
int main()
{
	//freopen("input.txt","r",stdin);
	//freopen("output.txt","w",stdout);

	int n,m,min,max,i,cmin=1, cmax=1,t;
	scanf("%d%d%d%d",&n,&m,&min,&max);
	for (i=0; i<m; i++)
	{
		scanf("%d",&t);
		if (t==min)
		{
			cmin=0;
		}
		if (t==max)
		{
			cmax=0;
		}
	}
	if (m+cmin+cmax<=n)
	{
		printf("Correct");
	}
	else
	{
		printf("Incorrect");
	}

	return 0;
}

#include<iostream>
using namespace std;

int main()
{

    int n,m,mn,mx;

    cin>>n>>m>>mn>>mx;
    int a[m+1];

    bool flag=true;
    int mn2=200,mx2=-1;
    for(int i=0;i<m;i++) {cin>>a[i]; if(a[i]>mx || a[i]<mn) flag=false; mn2=min(a[i],mn2);mx2=max(mx2,a[i]);}
    int reqd=0;
    if(flag)
    {
    if(mn2!=mn) reqd++;
    if(mx2!=mx) reqd++;

    if(reqd>(n-m)) flag=false;
    else{

    int temp=n-m-reqd;
    int cnt=(mn2-mn-(mn2!=mn ? 1 :0)) + (mx2-mn2-(mx2!=mn2 ? 1 :0)) + (mx-mx2-(mx2!=m ? 1 :0));
    if(cnt<temp) flag=false;
    }
    }
    if(flag) cout<<"Correct\n";
    else cout<<"Incorrect\n";
}

#include <bits/stdc++.h>
using namespace std;
int main() {
	ios_base::sync_with_stdio(false);
	int n, m, max, min, a, c = 2, d = 0;
	bool prf = false, prfs = false;
	cin >> n >> m >> max >> min;
	for (int i = 1; i <= m; i++) {
		cin >> a;
		if (a!= max && a != min)
		c++;
		if (a == max || a == min)
		d++;
		if (a > max || a < min) {
			cout << "Incorrect";
			return 0;
		}
	}
	if (c == n)
		cout << "Correct";
		else if (c + d >= n && d!= 0)
		cout << "Correct";
		else
		cout << "Incorrect";
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
typedef  long long ll;
//double pi=3.1415926535898;
//double pi=acos(-1.0);
#define scarr(a,s,e) for(int i=s;i<=int(e);i++) scanf("%d ",&a[i]);
#define prarr(a,s,e) for(int i=s;i<=int(e);i++) printf("%d ",a[i]);
#define speed      ios::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);
#define rng(i,a,b) for(int i=a;i>=int(b);i--)
#define rep(i,a,b) for(int i=a;i<=int(b);++i)
#define lop(i,n)   for(int i=0;i<int(n);i++)
#define ms(x,a)    memset(x,a,sizeof(x))
#define all(x)     (x).begin(),(x).end()
#define sz(x)      int(x.size())
#define pb         push_back
//#define mp         make_pair
#define ff         first
//#define ss         second
#define sc(x)      scanf("%d",&x)
#define pr(x)      printf("%d ",x)
#define scl(x)     scanf("%lld",&x)
#define prl(x)     printf("%lld ",x)
#define prln(x)    printf("%d\n",x)
#define r0         return 0;
#define CC         continue;
#define scd(x)     scanf("%lf",&x)
#define prd(x) printf("%.10f\n",x);
#define bb(x)    cerr<< x <<endl;
//#define max(a,b) a<b?b:a
//#define min(a,b) a<b?a:b
const ll M   = 1e7+9 ;
const ll inf = 1e19  ;
const int si = 1e5+9 ;
int n,m,mx,mn,t;
bool bmx,bmn;
int main()
{
    cin>>n>>m>>mx>>mn;
    lop(i,m)
    {
        cin>>t;
        if(t<mn||t>mx)
        {
            cout<<"Incorrect";
            r0;
        }
        if(t==mn)
            bmn=1;
        if(t==mx)
            bmx=1;
    }
    int need = (!bmn) + (!bmx) ;
    if (n-m >= need)
    {
        cout<<"Correct";
    }
    else
        cout<<"Incorrect";
    r0;
}

/*

ll pwmod(ll a, ll n, ll mod) {
    ll ret = 1;
    while (n) {
        if (n & 1) ret = ret * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return ret;
}
*/
/*
freopen("output.txt","w",stdout);
freopen("input.txt","r",stdin);
for (int i=0;i<n;i++)            Hi    ^_^  hack me if you can :P
*/

#include <stdio.h>

int main()
{
  int arr[103];
  for(int i = 0; i < 103; i++)
    arr[i] = 0;
  int n, m, min, max;
  scanf("%d%d%d%d", &n, &m, &min, &max);
  int lost = max - min + 1;
  for(int i = 0; i < m; i++)
  {
    int t;
    scanf("%d", &t);
    if (arr[t] == 0)
    {
      arr[t] = 1;
      lost--;
    }
  }
  if (lost+m > n)
    printf("Incorrect");
  else
    printf("Correct");
  return 0;
}

#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <iterator>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <list>
#include <sstream>
#include <fstream>
#include <string>
#include <memory>
#include <utility>
#include <ctype.h>
#include <cstdlib>
#include <cassert>
#include <cstring>
using namespace std;
#define MIN(a,b)  (((a)<(b)) ? a : b)
#define MAX(a,b)   (((a)>(b)) ? a : b)
#define SUM(a,b,c)  (a+b+c)
#define MUl(a,b) a*b
#define Div(a,b) a/b
#define LO(i,n)   for(i=0;i<(int)n;i++)
#define LO3(i,a,b)      for(int i=(a);i<=(b);i++)
#define LOS(i,s)    for (int i=0;i<(int)s.size();i++)
#define LO1(i,s)    for (int i=0;i<s.size();i++)
#define LOV(i,v)   for (int i=0;i<v.size();i++)
#define wh(a)   while (a--)
#define EN(n)      cin>>n;
#define EN2(n,m)     cin>>n>>m;
#define EN3(n,m,k)      cin>>n>>m>>k;
#define cout(a,b,c)       cout<<a<<" "<<b<<" "<<c;
#define cout(a,b)   cout<<a<<" "<<b<<endl;
#define cout(a)  cout<<a<<endl;
#define pb push_back
#define c(a,b)  a%=b;
#define d(a,b)  b%=a;
#define GCD(a,b)
#define SORT(v)  sort(v.begin(),v.end())
#define RSORT(v) sort(v.rbegin(),v.rend())
#define SZ(X) (int)(X).size()
#define I  int
#define F  float
#define D  double
#define S  string
#define C  char
#define RETURN  return 0;
#define up ceil
#define down floor
#define N  1000
#define RE(s) freopen(s, "r", stdin)
#define WR(s) freopen(s, "w", stdout)
#define MOD(x,y) fmod(x,y)
#define SUM(v) accumulate(v.begin(),v.end(),0);
typedef long long ll;
typedef vector<ll> integr;
typedef vector<char> character;
typedef vector <string> strings;
//-------------------------------------
int main()
{
    ios::sync_with_stdio(0);
/* freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
  #ifndef ONLINE_JUDGE
      freopen("test.in", "rt", stdin);
  #endif

  cout.setf(ios::fixed);
  cout.precision(10);
  */

int n,m,mi,ma;
cin>>n>>m>>mi>>ma;
set<int>xx;
int g=m;
int v=n-m;
int a[m],i=0;
int ok=0;
xx.insert(mi);
xx.insert(ma);
while (m--){
    cin>>a[i];
    int x=a[i];
 if (n-x>ma||n-x<mi){ok=1; break;}
 xx.insert(x);
 i++;

 }
//Correct//Incorrect
//int seet = ma-mi+1;
if (ok==0&&xx.size()==n)cout<<"Correct"<<endl;
else cout<<"Incorrect"<<endl;

    RETURN
}

#include <iostream>

using namespace std;

int main()
{
    int n,m,maxim,minim,okmin=0,okmax=0,ok=1,x,count=0;
    cin>>n>>m>>minim>>maxim;
    while(m--)
    {
        cin>>x;
        if(x==minim)
            okmin=1;
        if(x==maxim)
            okmax=1;
        if(x<minim || x>maxim)
            ok=0;
    }
    if(ok)
    {
        if(!okmin)
            ++count;
        if(!okmax)
            ++count;
        if(minim==maxim && count==2)
            --count;
        if(count<=n-m)
            cout<<"Correct\n";
        else
            cout<<"Incorrect\n";
    }
    else
        cout<<"Incorrect\n";
    return 0;
}

/* 문제

*/

// 2014.

#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <functional>
#include <cstring>
#include <string>
#include <map>
#include <iostream>

#define INF     0x7fffffff
#define MINF    0x80000000
#define test    printf("test\n")
#define A       first
#define B       second

using namespace std;

typedef long long ll;
typedef vector <double> vec_d;
typedef vector <vec_d>  vvec_d;
typedef vector <int>    vec_i;
typedef vector <vec_i>  vvec_i;
typedef pair <int, int> pair_i;

int main()
{
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
#endif

    int n, m, max1, min1;
    int t[101];

    cin >> n >> m >> max1 >> min1;

    for (int i = 0; i < m; i++)
    {
        cin >> t[i];
    }

    sort(t, t + m);
    int tmp = n - m;

    if (t[0] < min1 || t[m - 1] > max1)
    {
        printf("Incorrect\n");
        return 0;
    }

    if (t[0] == min1 && t[m - 1] == max1)
    {
        printf("Correct\n");
        return 0;
    }
    else if (t[0] == min1 && t[m - 1] != max1)
    {
        if (tmp >= 1)
        {
            printf("Correct\n");
            return 0;
        }
        else
        {
            printf("Incorrect\n");
            return 0;
        }
    }
    else if (t[0] != min1 && t[m - 1] == max1)
    {
        if (tmp >= 1)
        {
            printf("Correct\n");
            return 0;
        }
        else
        {
            printf("Incorrect\n");
            return 0;
        }
    }
    else
    {
        if (tmp >= 2)
        {
            printf("Correct\n");
            return 0;
        }
        else
        {
            printf("Incorrect\n");
            return 0;
        }
    }
    return 0;
}

#include<bits/stdc++.h>
#define vi vector<int>
#define ll long long int
#define vll vector<ll>
#define f(i,n) for(int i=0;i<n;i++)
#define fast {ios_base::sync_with_stdio(false);cin.tie(NULL);}
#define pb push_back
#define pi 2*acos(0.0)
#define ms(a,v) memset(a,v,sizeof(a));
using namespace std;
int main()
{
    fast
    int n,m,mn,mx,c=0;
    cin>>n>>m>>mn>>mx;
    int a[m];
    f(i,m)
    {
       cin>> a[i];
       if(a[i]>=mn && a[i]<=mx) c++;
    }
    if(c+2==n) cout<<"Correct"<<endl;
    else cout<<"Incorrect"<<endl;
    return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int n,m,min,max,i;
    bool flag=true;
    int t[101];

    cin>>n>>m>>min>>max;
    if(n<=m){
      cout<<"Incorrect"<<endl;
            return 0;
    }
    int tmp;
    tmp=n-m;
    for(i=0;i<m;i++){
        cin>>t[i];
        if(t[i]<min||t[i]>max)
        {
            cout<<"Incorrect"<<endl;
            return 0;
        }
        if(t[i]!=min&&t[i]!=max){
            if(tmp==1){
              flag=0;
              //break;
            }
            else if(tmp==2){

                flag=1;
                //break;
            }
            else
                tmp--;
            }
        else{
              flag=1;
            //  break;
            }

    }
    if(flag==1)
    {
        cout<<"Correct"<<endl;
        return 0;
    }
    else{
        cout<<"Incorrect"<<endl;
        return 0;
    }

}

#include<bits/stdc++.h>
#define  FOR(i,x,n) for(int i=x;i<n;i++)
#define rFOR(i,x,n) for(int i=x;i>n;i--)
#define ll long long
#define fi first
#define se second
using namespace std;
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
  int n,m,mn,mx,x; cin>>n>>m>>mn>>mx;
  bool ok=0;
  FOR(i,0,m)
  {
    cin>>x;
    if(x<mn||x>mx) {cout<<"Incorrect"; return 0;}
    if(x>=mn&&x<=mx) ok=1;
  }
  (ok&&n-m>=2)? cout<<"Correct" : cout<<"Incorrect";
}

#include<bits/stdc++.h>
#define PI acos(-1.0)
#define pb push_back
#define F first
#define S second
#define endl '\n'
#define debug puts
#define mem(a,b) memset(a,b,sizeof(a))
#define setp cout << fixed << setprecision(3)
#define FAST_IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
typedef long long ll;
const int N=3e5+5;
const int MOD=1e9+7;
const ll INF=1e18+8;
const int maxn=1e6+5;
ll a[maxn],b[maxn];
int main()
{
	long long x,y,n,p,d,z,m,w,minn=0,mi=0,ma=0,maxx=0,temp1=0,temp2=0,temp=0,sum=0,sum1=0,sum2=0,sum3=0,sum4=0,flag1=0,flag2=0,flag3=0,flag4=0,flag=0,len2=0,len1=0,len=0;
	scanf("%lld %lld %lld %lld",&n,&m,&maxx,&minn);
	for(int i=0;i<m;i++){
		scanf("%lld",&x);
		a[x]++;
	}
	if(a[maxx]==0){
		sum++;
	}
	if(a[minn]==0){
		sum++;
	}
	sum1=n-m;
	if(sum1>=sum){
		printf("Correct");
	}
	else{
		printf("Incorrect");
	}
	return 0;
}

#include<iostream>
using namespace std;
int main(){
    int n,m,min,max;
    cin>>n>>m>>min>>max;
    int num;
    cin>>num;
    if(num<=max&&num>=min&&num<n){
        cout<<"Correct\n";
    }
    else cout<<"Incorrect\n";

}

// dataRecovery.cpp : Defines the entry point for the console application.
//

#include <iostream>

using namespace std;

int main()
{
    int n,m,min,max,i;
    int t[101];

    cin>>n>>m>>min>>max;
    int tmp;
    tmp=n-m;
    for(i=0;i<m;i++){
        cin>>t[i];
        if(t[i]!=min&&t[i]!=max&&tmp==1){
              cout<<"Incorrect"<<endl;
              return 0;
            }
        else{
              cout<<"Correct"<<endl;
              return 0;
            }

    }

}

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n, m, mn, mx, t, x, y;
int main()
{
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cin >> n >> m >> mn >> mx;
	int rem = n - m;
	while (m--) {
		cin >> t;
		if (t == mn)x = 1;
		if (t == mx)y = 1;
	}
	if (x && y || x + y + rem >= 2)
		cout << "Correct";
	else
		cout << "Incorrect";
}

/**************************************************
 * Author	 : xiaohao Z
 * Blog	 : http://www.cnblogs.com/shu-xiaohao/
 * Last modified : 2014-04-21 15:13
 * Filename	 : RCC_2014_R_1_A.cpp
 * Description	 :
 * ************************************************/

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <queue>
#include <stack>
#include <vector>
#include <set>
#include <map>
#define MP(a, b) make_pair(a, b)
#define PB(a) push_back(a)

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<unsigned int,unsigned int> puu;
typedef pair<int, double> pid;
typedef pair<ll, int> pli;
typedef pair<int, ll> pil;

const int INF = 0x3f3f3f3f;
const double eps = 1E-6;

int main()
{
//	freopen("in.txt", "r", stdin);

	int n, m, min, max, a[1010];
	while(cin >> n >> m >> min >> max){
		for(int i=0; i<m; i++){
			cin >> a[i];
			if(a[i] == min) min = -1;
			if(a[i] == max) max = -1;
		}
		int cnt = 0;
		if(min >= 0) cnt ++;
		if(max >= 0) cnt ++;
		if(n-m < cnt) cout << "Incorrect" << endl;
		else cout << "Correct" << endl;
	}
	return 0;
}