#include <bits/stdc++.h>
using namespace std;
const int MAXN = 300005;
const int INF = 0X3F3F3F3F;
char c[MAXN], t[MAXN];
int N, Ans, TL, TR, pt, su[MAXN];
int L[MAXN], Ll[MAXN], dfn[MAXN];
int dis[MAXN], Sum[MAXN], C[MAXN];
void Compare(int a, int l, int r) {
  if (a > Ans) {
    Ans = a;
    TL = (l - 1) % N + 1;
    TR = (r - 1) % N + 1;
  }
}
void Prepare() {
  for (int i = 1; i <= N; i++) su[i] = su[i - 1] + (c[i] == '(' ? 1 : -1);
  for (int i = 1; i <= N; i++)
    if (su[i] < su[pt]) pt = i;
  pt++;
  for (int g = pt, len = 1; len <= N; len++, g = g % N + 1) t[len] = c[g];
}
void Init() {
  for (int i = 1, Cnt = 0; i <= N; i++) {
    if (t[i] == '(') dis[i] = ++Cnt, Ll[Cnt] = i;
    dfn[i] = Cnt;
    if (t[i] == ')') {
      dis[i] = Cnt;
      L[i] = Ll[Cnt];
      Sum[Cnt - 1]++;
      C[i] = Sum[Cnt];
      Sum[Cnt--] = 0;
    }
  }
  Ans = Sum[0];
  TL = TR = 1;
  for (int i = 1; i <= N; i++) {
    if (t[i] == '(') continue;
    if (dis[i] == 1) Compare(C[i] + 1, L[i] + pt - 1, i + pt - 1);
    if (dis[i] == 2) Compare(Sum[0] - 1 + 2 + C[i], L[i] + pt - 1, i + pt - 1);
  }
}
int Check() {
  int Cnt = 0;
  for (int i = 1; i <= N; i++) {
    if (c[i] == '(') Cnt++;
    if (c[i] == ')') Cnt--;
  }
  return Cnt;
}
int main() {
  scanf("%d%s", &N, c + 1);
  if (Check()) {
    printf("0\n1 1\n");
    return 0;
  }
  Prepare();
  Init();
  printf("%d\n%d %d\n", Ans, TL, TR);
}
