import std.experimental.all; T read(T)() { return readln.chomp.to!T; } T[] reads(T)() { return readln.split.to!(T[]); } alias readint = read!int; alias readints = reads!int; bool isPrime(long n) { assert(n > 1); if (n == 2) return true; if (n % 2 == 0) return false; for (long i = 3; i * i <= n; i += 2) { if (n % i == 0) return false; } return true; } int next(int n) { for (int i = 1; ; i++) { int x = n + i; if (isPrime(x)) { return i - 1; } } } bool isInvalid(int n) { if (n == 1) return false; return isPrime(n); } void calc(int y, int x) { void result(int n) { if (n % 2 == 0) writeln("Second"); else writeln("First"); } int turn = 0; while (true) { // writeln(x, " ", y); if (isInvalid(x) && isInvalid(y)) { result(turn); break; } if (isInvalid(x)) { if (isInvalid(x + 1)) { result(turn); break; } x++; } else if (isInvalid(y)) { if (isInvalid(y + 1)) { result(turn); break; } y++; } else { if (isInvalid(x + 1) && isInvalid(y + 1)) { result(turn); break; } else if (isInvalid(x + 1)) { y++; } else x++; } turn++; } } void main() { auto yx = readints; int y = yx[0], x = yx[1]; calc(y, x); }