#include <bits/stdc++.h>
using namespace std;
int n, sh[300005], sum, mk[300005], ans, f[300005][2], g[300005][2];
int s[300005][4], dy[300005], al, ar;
stack<int> q;
struct node {
  int v, id;
} ch[300005];
int main() {
  scanf("%d\n", &n);
  for (int i = 1; i <= n; i++) {
    char ch = getchar();
    sh[i] = (ch == '(');
    sum += sh[i];
  }
  if (sum + sum != n) {
    printf("0\n1 1");
    return 0;
  }
  int cntl = 0, cntr = 0, res = 0;
  for (int k = 1; k <= n; k++) {
    if (sh[k] == 1)
      cntl++;
    else {
      if (cntl)
        cntl--;
      else
        cntr++;
    }
    f[k][0] = cntl;
    g[k][0] = cntr;
  }
  cntl = cntr = 0;
  for (int k = n; k >= 1; k--) {
    if (sh[k] == 0)
      cntr++;
    else {
      if (cntr)
        cntr--;
      else
        cntl++;
    }
    f[k][1] = cntl;
    g[k][1] = cntr;
  }
  for (int k = 0; k < n; k++) {
    if ((!f[k][0]) && (!g[k + 1][1]) && g[k][0] == f[k + 1][1]) {
      res++;
    }
  }
  for (int k = 0; k < n; k++) {
    if ((!f[k][0]) && (!g[k + 1][1]) && g[k][0] == f[k + 1][1]) {
      for (int i = 1; i <= n; i++) {
        ch[i].v = sh[(i + k - 1) % n + 1];
        ch[i].id = (i + k - 1) % n + 1;
      }
      break;
    }
  }
  int l = 0, r = 0, c1 = 0, c2 = 0;
  for (int i = 1; i <= n; i++) {
    if (ch[i].v) {
      l++;
      mk[i] = l;
      q.push(i);
    } else {
      if (l) {
        l--;
        mk[i] = l + 1;
        int p = q.top();
        q.pop();
        dy[p] = i;
        dy[i] = p;
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    s[i][1] = s[i - 1][1], s[i][2] = s[i - 1][2], s[i][3] = s[i - 1][3];
    if (!ch[i].v) {
      if (mk[i] <= 3) s[i][mk[i]]++;
    }
  }
  for (int i = 1; i <= n; i++) {
    if (!ch[i].v) continue;
    int p = dy[i];
    if (mk[i] == 1) {
      if (ans < s[p][2] - s[i - 1][2] + 1) {
        ans = s[p][2] - s[i - 1][2] + 1;
        al = ch[i].id;
        ar = ch[p].id;
      }
    }
    if (mk[i] == 2) {
      if (ans < s[n][1] + s[p - 1][3] - s[i][3] + 1) {
        ans = s[n][1] + 1 + s[p - 1][3] - s[i][3];
        al = ch[i].id, ar = ch[p].id;
      }
    }
    if (ans < s[n][1]) {
      ans = s[n][1];
      al = ch[i].id, ar = ch[i].id;
    }
  }
  printf("%d\n%d %d", ans, al, ar);
}
