#include using namespace std; // Compute Grundy numbers for bracket game int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; string S; cin >> N >> S; vector grundy(N, 0); stack st; for (int i = 0; i < N; i++) { if (S[i] == '(') { st.push(i); } else { int l = st.top(); st.pop(); // XOR tất cả grundy trong phạm vi (l, i) int g = 0; int j = l + 1; while (j < i) { g ^= grundy[j]; // bỏ qua toàn bộ khối con int depth = 1; int k = j + 1; while (k < i && depth > 0) { if (S[k] == '(') depth++; else depth--; k++; } j = k; } grundy[l] = 1 ^ g; grundy[i] = grundy[l]; } } // XOR tất cả grundy của các khối gốc int nim_sum = 0; int i = 0; while (i < N) { if (S[i] == '(') { nim_sum ^= grundy[i]; int depth = 1; int j = i + 1; while (j < N && depth > 0) { if (S[j] == '(') depth++; else depth--; j++; } i = j; } else i++; } cout << (nim_sum ? "First" : "Second") << "\n"; return 0; }