import ru.ifmo.testlib.*;
import ru.ifmo.testlib.Outcome.Type;
import java.util.*;

public class Check implements Checker {
    @Override
    public Outcome test(InStream inf, InStream ouf, InStream ans) {
        try {
        int n = inf.nextInt();
	int k = ouf.nextInt();
	if (k > 1000000) {
			return new Outcome(Type.WA, "");
	}
	TreeSet<Integer> set = new TreeSet<Integer>();
	for (int i = 0; i < k; i++) {
		int x = ouf.nextInt();
		if (x > 0) {
			if (x != 1 && x != set.first() + 1) {
				return new Outcome(Type.WA, "Wrong choise");
			}
			if (set.contains(x)) {	
				return new Outcome(Type.WA, "We found a wolf here");
			}
			set.add(x);	
		} else {
			x = -x;
                	if (x != 1 && x != set.first() + 1) {
				return new Outcome(Type.WA, "Wrong choise");
			}
			if (!set.contains(x)) {	
				return new Outcome(Type.WA, "We can't find a wolf here");
			}
			set.remove(x);	
		 }
	}
	
	if (set.size() != n) {
		return new Outcome(Type.WA, "Free cave");
	}	
        return new Outcome(Type.OK, "");
      } catch (Throwable e) {
            return new Outcome(Type.PE, "Something went wrong!");
      }
    }
}
