#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
char s[N], t[N];
int sum[N << 1];
vector<int> calPos(int l, int r) {
  vector<int> ans;
  int cnt = 0;
  for (int i = l; i <= r; i++) {
    if (t[i] == '(')
      cnt++;
    else
      cnt--;
    if (cnt == 0) ans.push_back(i);
  }
  return ans;
}
int calAns(int l, int r, int flag = 0) {
  int cnt = 0, ans = 0;
  int pre = 0;
  int m = 0;
  for (int i = l; i <= r; i++) {
    if (t[i] == '(')
      cnt++;
    else
      cnt--;
    if (cnt == 0) {
      ans++;
      if (flag) m = max(calAns(pre + 1, i, 0), m);
    }
  }
  return ans + 1;
}
void solve() {
  int n;
  scanf("%d%s", &n, s + 1);
  int cnt = 0;
  for (int i = 1; i <= n; i++) {
    if (s[i] == '(')
      cnt++, sum[i] = 1;
    else
      sum[i] = -1;
    sum[i + n] = sum[i];
  }
  if (n % 2 == 0 && cnt == n / 2) {
    sum[0] = 0;
    for (int i = 1; i <= 2 * n; i++) sum[i] += sum[i - 1];
    multiset<int> st;
    for (int i = 1; i <= n; i++) st.insert(sum[i]);
    for (int i = 1; i <= n; i++) {
      int v = *st.begin() - sum[i - 1];
      st.erase(st.lower_bound(sum[i]));
      st.insert(sum[i + n]);
      if (v == 0) {
        int m = 0;
        for (int j = i; j <= n; j++) t[++m] = s[j];
        for (int j = 1; j < i; j++) t[++m] = s[j];
        vector<int> vec = calPos(1, n);
        int ans = (int)vec.size();
        pair<int, int> pos = pair<int, int>(1, 1);
        int pre = 0;
        for (auto j : vec) {
          vector<int> tvec = calPos(pre + 2, j - 1);
          if ((int)tvec.size() + 1 > ans) {
            ans = (int)tvec.size() + 1;
            pos = pair<int, int>(pre + 1, j);
          }
          int pp = pre + 1;
          for (auto k : tvec) {
            int cnt = (int)calPos(pp + 2, k - 1).size() + 1 + (int)vec.size();
            if (cnt > ans) {
              ans = cnt;
              pos = pair<int, int>(pp + 1, k);
            }
            pp = k;
          }
          pre = j;
        }
        pos.first += i - 1;
        pos.second += i - 1;
        if (pos.first > n) pos.first -= n;
        if (pos.second > n) pos.second -= n;
        printf("%d\n%d %d\n", ans, pos.first, pos.second);
        break;
      }
    }
  } else {
    printf("0\n1 1\n");
  }
}
int main() {
  solve();
  return 0;
}
