#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
const int maxn = 3e5 + 5;
int n, sum[maxn], cnt[3][maxn];
char s[maxn], t[maxn];
int ans, p1, p2;
inline void solve(int L, int R) {
  if (L >= R) return;
  int lst = L;
  for (int i = L + 1; i <= R; i++) {
    if (sum[i] == 1) {
      int temp = cnt[2][i] - cnt[2][lst] + cnt[0][n];
      if (temp > ans) {
        ans = temp;
        p1 = lst + 1;
        p2 = i;
      }
      lst = i;
    }
  }
}
int main() {
  n = read();
  scanf("%s", s + 1);
  for (int i = 1; i <= n; i++) {
    if (s[i] == '(') sum[i] = sum[i - 1] + 1;
    if (s[i] == ')') sum[i] = sum[i - 1] - 1;
  }
  if (sum[n] != 0) {
    puts("0");
    puts("1 1");
    return 0;
  }
  int mn = n, f = 0;
  for (int i = 1; i <= n; i++)
    if (sum[i] < mn) {
      mn = sum[i];
      f = i;
    }
  for (int i = 1; i <= f; i++) t[i + (n - f)] = s[i];
  for (int i = f + 1; i <= n; i++) t[i - f] = s[i];
  for (int i = 1; i <= n; i++) {
    if (t[i] == '(') sum[i] = sum[i - 1] + 1;
    if (t[i] == ')') sum[i] = sum[i - 1] - 1;
    for (int j = 0; j <= 2; j++) cnt[j][i] = cnt[j][i - 1];
    if (sum[i] <= 2) cnt[sum[i]][i]++;
  }
  ans = cnt[0][n];
  p1 = p2 = 1;
  int lst = 0;
  for (int i = 2; i <= n; i++) {
    if (sum[i] == 0) {
      int temp = cnt[1][i] - cnt[1][lst];
      if (temp > ans) {
        ans = temp;
        p1 = lst + 1;
        p2 = i;
      }
      solve(lst + 1, i - 1);
      lst = i;
    }
  }
  if (p1 != p2) {
    if (p1 <= n - f)
      p1 += f;
    else
      p1 -= (n - f);
    if (p2 <= n - f)
      p2 += f;
    else
      p2 -= (n - f);
  }
  cout << ans << '\n';
  cout << p1 << " " << p2 << '\n';
  return 0;
}
