#include <bits/stdc++.h>
const int INF = 2000000005;
const long long BIG_INF = 2000000000000000005;
const int mod = 1000000007;
const int P = 31;
const long double PI = 3.141592653589793238462643;
const double eps = 1e-9;
using namespace std;
vector<pair<int, int> > dir = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
bool valid(int x, int y, int n, int m) {
  return x >= 0 && y >= 0 && x < n && y < m;
}
mt19937 rng(1999999973);
const int N = 300000 + 50;
int bal[N];
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  int n;
  string s;
  cin >> n >> s;
  int sum = 0, mn = 0;
  for (int i = 0; i < n; i++) {
    if (s[i] == '(')
      sum++;
    else
      sum--;
    bal[i] = sum;
    mn = min(mn, sum);
  }
  if (sum != 0) {
    cout << 0 << '\n';
    cout << "1 1";
    return 0;
  }
  int colmn = 0;
  for (int i = 0; i < n; i++) colmn += (bal[i] == mn);
  int ans = colmn, ansl = 0, ansr = 0;
  int ad = 0, curl = 0, curr = 0;
  for (int i = 0; i < n; i++) {
    if (bal[i] == mn + 2) ad++;
    curr++;
    if (bal[i] == mn + 1 || bal[i] == mn) {
      ad = 0;
      while (i + 1 < n && s[i + 1] != '(') i++;
      curl = i + 1, curr = i + 1;
    }
    if (ad + colmn > ans && curr < n && s[curr] == ')') {
      ansl = curl;
      ansr = curr;
      ans = ad + colmn;
    }
  }
  ad = 0, curl = 0, curr = 0;
  for (int i = 0; i < n; i++) {
    if (bal[i] == mn + 1) ad++;
    curr++;
    if (bal[i] == mn) {
      ad = 0;
      while (i + 1 < n && s[i + 1] != '(') i++;
      curl = i + 1, curr = i + 1;
    }
    if (ad > ans && curr < n && s[curr] == ')') {
      ansl = curl;
      ansr = curr;
      ans = ad;
    }
  }
  int fst = -1;
  for (int i = 0; i < n; i++) {
    if (bal[i] == mn) {
      fst = i;
      break;
    }
  }
  ad = 0;
  while (fst >= 0 && s[fst] != ')') {
    fst--;
  }
  int lst = INF;
  for (int i = n - 1; i >= 0; i--) {
    if (bal[i] == mn) break;
    if (s[i] == '(') lst = i;
  }
  for (int i = 0; i < n; i++) {
    if (bal[i] == mn + 1 && !(i >= fst && i < lst)) ad++;
  }
  if (lst < n && fst >= 0 && ad > ans && mn + 1 <= 0) {
    ans = ad;
    ansl = fst;
    ansr = lst;
  }
  fst = -1;
  for (int i = 0; i < n; i++) {
    if (bal[i] == mn || bal[i] == mn + 1) {
      fst = i;
      break;
    }
  }
  ad = 0;
  while (fst >= 0 && s[fst] != ')') {
    fst--;
  }
  lst = INF;
  for (int i = n - 1; i >= 0; i--) {
    if (bal[i] == mn || bal[i] == mn + 1) break;
    if (s[i] == '(') lst = i;
  }
  for (int i = 0; i < n; i++) {
    if ((bal[i] == mn + 2 && !(i >= fst && i < lst)) || bal[i] == mn) ad++;
  }
  if (lst < n && fst >= 0 && ad > ans && mn + 2 <= 0) {
    ans = ad;
    ansl = fst;
    ansr = lst;
  }
  cout << ans << '\n';
  cout << ansl + 1 << " " << ansr + 1 << '\n';
  return 0;
}
