#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000000 + 500;
const int maxm = 2000000 + 1000;
const int maxt = 3000000 + 100;
const int maxk = 10 + 3;
const long long unit = 1LL;
const int INF = 0x3f3f3f3f;
const long long Inf = 0x3f3f3f3f3f3f3f3fLL;
const double eps = 1e-3;
const double inf = 1e15;
const double pi = acos(-1.0);
const long long mod = 1000000007LL;
inline long long read() {
  long long x = 0;
  bool t = false;
  char ch = getchar();
  while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
  if (ch == '-') t = true, ch = getchar();
  while (ch <= '9' && ch >= '0') x = x * 10 + ch - 48, ch = getchar();
  return t ? -x : x;
}
int n, a[maxn], b[maxn], s[maxn], cnt1[maxn], cnt2[maxn];
char str[maxn];
int tot, x[maxn], tot2, y[maxn];
void upd(int &x, int st) {
  if (x <= n - st + 1)
    x += st - 1;
  else
    x -= (n - st + 1);
}
int main() {
  n = read();
  scanf("%s", str + 1);
  for (int i = 1; i <= n; ++i)
    if (str[i] == '(')
      a[i] = 1;
    else
      a[i] = -1;
  int mx = 0;
  for (int i = 1; i <= n; ++i) s[i] = s[i - 1] + a[i], mx = min(s[i], mx);
  if (s[n] != 0) {
    printf("0\n1 1\n");
    return 0;
  }
  int st = 0;
  for (int i = 0; i <= n; ++i)
    if (s[i] == mx) {
      st = i + 1;
      break;
    }
  for (int i = 1; i <= n; ++i) b[i] = a[(st + i - 2) % n + 1];
  for (int i = 1; i <= n; ++i) a[i] = b[i];
  for (int i = 1; i <= n; ++i) s[i] = s[i - 1] + a[i];
  x[++tot] = 0;
  for (int i = 1; i <= n; ++i) {
    cnt1[i] = cnt1[i - 1], cnt2[i] = cnt2[i - 1];
    if (s[i] == 0) x[++tot] = i;
    if (s[i] == 1) ++cnt1[i], y[++tot2] = i;
    if (s[i] == 2) ++cnt2[i];
  }
  int ans = tot - 1;
  pair<int, int> res = make_pair(1, 1);
  for (int i = 1; i < tot; ++i) {
    int l = x[i], r = x[i + 1];
    if (cnt1[r] - cnt1[l] > ans) {
      ans = cnt1[r] - cnt1[l];
      res.first = l + 1, res.second = r;
    }
  }
  for (int i = 1; i < tot2; ++i) {
    int ll = y[i], rr = y[i + 1];
    if (cnt2[rr] - cnt2[ll] + tot - 1 > ans) {
      ans = cnt2[rr] - cnt2[ll] + tot - 1;
      res.first = ll + 1, res.second = rr;
    }
  }
  printf("%d\n", ans);
  upd(res.first, st), upd(res.second, st);
  printf("%d %d\n", res.first, res.second);
  return 0;
}
