#include <bits/stdc++.h>   using namespace std;   using Int = long long;   constexpr static int mod = 1e9 + 7;   constexpr static int inf = (1 << 30) - 1;   constexpr static Int infll = (1LL << 61) - 1;   int Competitive_Programming =       (ios_base::sync_with_stdio(false), cin.tie(nullptr),        cout << fixed << setprecision(15), 0);   #pragma GCC target( avx2 )   #pragma GCC optimize( O3 )   #pragma GCC optimize( unroll-loops )   template <typename A, typename B>   string to_string(pair<A, B> p);   template <typename A, typename B, typename C>   string to_string(tuple<A, B, C> p);   template <typename A, typename B, typename C, typename D>   string to_string(tuple<A, B, C, D> p);   string to_string(const string &s) { return     + s +    ; }   string to_string(const char *s) { return to_string((string)s); }   string to_string(bool b) { return (b ?  true  :  false ); }   string to_string(vector<bool> v) {     bool first = true;     string res =  { ;     for (int i = 0; i < static_cast<int>(v.size()); i++) {       if (!first) {         res +=  ,  ;       }       first = false;       res += to_string(v[i]);     }     res +=  } ;     return res;   }   template <size_t N>   string to_string(bitset<N> v) {     string res =   ;     for (size_t i = 0; i < N; i++) {       res += static_cast<char>( 0  + v[i]);     }     return res;   }   template <typename A>   string to_string(A v) {     bool first = true;     string res =  { ;     for (const auto &x : v) {       if (!first) {         res +=  ,  ;       }       first = false;       res += to_string(x);     }     res +=  } ;     return res;   }   template <typename A, typename B>   string to_string(pair<A, B> p) {     return  (  + to_string(p.first) +  ,   + to_string(p.second) +  ) ;   }   template <typename A, typename B, typename C>   string to_string(tuple<A, B, C> p) {     return  (  + to_string(get<0>(p)) +  ,   + to_string(get<1>(p)) +  ,   +            to_string(get<2>(p)) +  ) ;   }   template <typename A, typename B, typename C, typename D>   string to_string(tuple<A, B, C, D> p) {     return  (  + to_string(get<0>(p)) +  ,   + to_string(get<1>(p)) +  ,   +            to_string(get<2>(p)) +  ,   + to_string(get<3>(p)) +  ) ;   }   void debug_out() { cerr << endl; }   template <typename Head, typename... Tail>   void debug_out(Head H, Tail... T) {     cerr <<     << to_string(H);     debug_out(T...);   }   int func(string &s) {     int ret = 0, ctr = 0, mi = inf;     for (int i = 0; i < s.size(); i++) {       if (s[i] ==  ( )         ctr++;       else         ctr--;       mi = min(ctr, mi);     }     ctr = 0;     for (int i = 0; i < s.size(); i++) {       if (s[i] ==  ( )         ctr++;       else         ctr--;       if (ctr == mi) ret++;     }     return ret;   }   int main() {     int N;     cin >> N;     string s;     cin >> s;     int op = 0, ed = 0;     for (int i = 0; i < N; i++) {       if (s[i] ==  ( )         op++;       else         ed++;     }     if (op != ed) {       cout << 0 <<   n ;       cout << 1 <<     << 1 <<   n ;       return 0;     }     int ans = 0, l = 1, r = 1;     for (int i = 0; i < N; i++) {       for (int j = i + 1; j < N; j++) {         swap(s[i], s[j]);         int cnt = func(s);         if (cnt > ans) {           ans = cnt, l = i + 1, r = j + 1;         }         swap(s[i], s[j]);       }     }     cout << ans <<   n ;     cout << l <<     << r <<   n ;   }