#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
long long n, m, a, b, c, k, temp, x, y;
const int MAXN = 1e5 + 11, mod = 1e9 + 7;
inline long long max(long long a, long long b) { return ((a > b) ? a : b); }
inline long long min(long long a, long long b) { return ((a > b) ? b : a); }
inline vector<long long> read(int n) {
  vector<long long> v(n);
  for (int i = 0; i < v.size(); i++) cin >> v[i];
  return v;
}
int value(char ch) { return ((ch == '(') ? 1 : -1); }
int ans(string &s) {
  if (s.size() & 1) return 0;
  int prefixmin[s.length()], suffixmin[s.length()], prefix[s.length()],
      suffix[s.length()];
  prefix[0] = value(s[0]);
  prefixmin[0] = prefix[0];
  for (int i = 1; i < s.length(); i++)
    prefix[i] = prefix[i - 1] + value(s[i]),
    prefixmin[i] = min(prefixmin[i - 1], prefix[i]);
  suffix[s.length() - 1] = value(s[s.size() - 1]);
  suffixmin[s.length() - 1] = value(s[s.size() - 1]);
  long long mi = prefix[n - 1];
  for (int i = s.length() - 2; i >= 0; i--) {
    suffix[i] = suffix[i + 1] + value(s[i]);
    mi = min(prefix[i], mi);
    suffixmin[i] = mi - ((i) ? prefix[i - 1] : 0);
  }
  int n = s.size();
  int cnt = (prefixmin[n - 1] == 0 && prefix[n - 1] == 0);
  for (int i = 1; i < s.size(); i++) {
    if (suffixmin[n - i] >= 0 && prefixmin[n - 1 - i] + suffix[n - i] >= 0)
      cnt++;
  }
  return cnt;
}
void sol(void) {
  cin >> n;
  string s;
  cin >> s;
  int mx = ans(s);
  pair<long long, long long> p = {1, 1};
  for (int i = 0; i < n - 1; i++) {
    for (int j = i + 1; j < n; j++) {
      if (s[i] != s[j]) {
        swap(s[i], s[j]);
        if (ans(s) > mx) mx = ans(s), p = {i + 1, j + 1};
        swap(s[i], s[j]);
      }
    }
  }
  cout << mx << '\n';
  cout << p.first << ' ' << p.second;
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int test = 1;
  for (int i = 1; i <= test; i++) sol();
}
