#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } const long long MAX = 5100000; const long long INF = 1LL << 60; const long long mod = 1000000007LL; //const long long mod = 998244353LL; using namespace std; typedef unsigned long long ull; typedef long long ll; vector sum; vector a; bool dfs(int left, int right) { ll s = sum[right] - sum[left]; ll ave = s / (right - left); if (s % (right - left) == 0) ave--; auto itr = upper_bound(a.begin() + left, a.begin() + right, ave); if (itr == a.begin() + left) return true; bool flag = false; ll id = itr - a.begin(); flag |= !dfs(left, id); flag |= !dfs(id, right); return flag; } int main() { /* cin.tie(nullptr); ios::sync_with_stdio(false); */ ll n; scanf("%lld", &n); a = vector(n); for (ll i = 0; i < n; i++) scanf("%lld", &a[i]); sum = vector(n + 1); for (ll i = 0; i < n; i++) sum[i + 1] = sum[i] + a[i]; if (dfs(0, n)) { puts("First"); } else { puts("Second"); } return 0; }