#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f, maxn = 200007;
const long long MOD = 1004535809;
const long long LINF = 0x3f3f3f3f3f3f3f3fLL;
const long long P = 19260817;
char nc() {
  static char buf[100000], *p1 = buf, *p2 = buf;
  return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2)
             ? EOF
             : *p1++;
}
inline long long read() {
  long long 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 << 3) + (x << 1) + ch - '0') % MOD, ch = getchar();
  return x * f;
}
void write(int x) {
  if (!x) putchar('0');
  if (x < 0) x = -x, putchar('-');
  static int sta[20];
  register int tot = 0;
  while (x) sta[tot++] = x % 10, x /= 10;
  while (tot) putchar(sta[--tot] + 48);
}
int n;
char s[maxn];
int sump[maxn], sums[maxn];
int main() {
  scanf("%s", s + 1);
  n = strlen(s + 1);
  int f1 = 0, f2 = 0;
  for (int i = 1; i <= n; i++) {
    if (s[i] == '(') f2 = 1;
    if (f2 == 1 && s[i] == ')') f1 = 1;
  }
  if (f1 == 0) {
    printf("0");
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    sump[i] = sump[i - 1] + (s[i] == '(');
  }
  for (int i = n; i >= 1; i--) {
    sums[i] = sums[i + 1] + (s[i] == ')');
  }
  for (int i = 1; i <= n; i++) {
    if (sump[i] == sums[i]) {
      printf("1\n%d\n", 2 * sump[i]);
      for (int j = 1; j <= i; j++) {
        if (s[j] == '(') printf("%d ", j);
      }
      for (int j = i; j <= n; j++) {
        if (s[j] == ')') printf("%d ", j);
      }
      return 0;
    }
  }
  for (int i = 1; i <= n; i++) {
    if (sump[i] == sums[i + 1]) {
      printf("1\n%d\n", 2 * sump[i]);
      for (int j = 1; j <= i; j++) {
        if (s[j] == '(') printf("%d ", j);
      }
      for (int j = i + 1; j <= n; j++) {
        if (s[j] == ')') printf("%d ", j);
      }
      return 0;
    }
  }
  return 0;
}
