func_code_string: #include <bits/stdc++.h>   using namespace std;   typedef pair<int, int> ll;   typedef vector<int> vl;   typedef vector<ll> vll;   typedef vector<vl> vvl;   template <typename T>   ostream &operator<<(ostream &o, vector<T> v) {     if (v.size() > 0) o << v[0];     for (unsigned i = 1; i < v.size(); i++) o <<     << v[i];     return o <<   n ;   }   template <typename U, typename V>   ostream &operator<<(ostream &o, pair<U, V> p) {     return o <<  (  << p.first <<  ,   << p.second <<  )  ;   }   template <typename T>   istream &operator>>(istream &in, vector<T> &v) {     for (unsigned i = 0; i < v.size(); i++) in >> v[i];     return in;   }   template <typename T>   istream &operator>>(istream &in, pair<T, T> &p) {     in >> p.first;     in >> p.second;     return in;   }   vl G(5003, 0);   string a;   bool check() {     int ans = 0;     int add = 0;     for (int i = (1); i < (int)a.length() - 1; i++) {       if (a[i - 1] == a[i + 1] and a[i] !=  $ )         add++;       else {         ans ^= G[add];         add = 0;       }     }     return ans == 0;   }   int main() {     std::ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     cout.precision(20);     G[0] = 0;     G[1] = 1;     for (int i = (2); i < (int)5003; i++) {       set<int> temp;       for (int(j) = 0; (j) < (i); (j)++) {         if (j == 0 or j == i - 1)           temp.insert(G[i - 2]);         else           temp.insert(G[j - 1] ^ G[i - j - 2]);       }       while (temp.find(G[i]) != temp.end()) G[i]++;     }     cin >> a;     a +=  # ;     for (int i = (1); i < (int)a.length() - 1; i++)       if (a[i - 1] == a[i + 1]) {         char c = a[i];         a[i] =  $ ;         if (check()) {           cout <<  First                 <<   n ;           cout << i + 1 <<   n ;           return 0;         }         a[i] = c;       }     cout <<  Second ;     return 0;   }   