#include using i64 = long long; using std::cout; using std::endl; using std::cin; std::vector a; std::vector s; int n; int count = 0; std::map> dp; int solve(i64 l = 0, i64 r = n) { // [l, r) if(l == r) return dp[l][r] = 0; if(l + 1 == r) return dp[l][r] = 1; if(dp.count(l) and dp[l].count(r)) return dp[l][r]; i64 mid = (s[r] - s[l] + (r - l) - 1) / (r - l); int k = lower_bound(begin(a) + l, begin(a) + r, mid) - begin(a); if(l == k || k == r) return 1; int L = !solve(l, k); int R = !solve(k, r); return dp[l][r] = L | R; } int main() { scanf("%d", &n); a.resize(n); s.resize(n + 1, 0); for(int i = 0; i < n; i++) { scanf("%lld", &a[i]); s[i + 1] = s[i] + a[i]; } if(solve()) printf("First\n"); else printf("Second\n"); return 0; }