#include <bits/stdc++.h>
using namespace std;
int main() {
  string s;
  cin >> s;
  int cnt = 0;
  vector<int> v[10000];
  while (1) {
    int n = s.length();
    vector<int> v1, v2;
    for (int i = 0; i < n; i++) {
      if (s[i] == '(') {
        v1.push_back(i);
      }
    }
    if (v1.size() == 0) {
      break;
    }
    for (int i = n - 1; i >= 0; i--) {
      if (i < v1[0]) break;
      if (s[i] == ')') v2.push_back(i);
    }
    if (v2.size() == 0) {
      break;
    }
    sort(v2.begin(), v2.end());
    int m1 = -1, idx;
    for (int i = 0; i < v1.size(); i++) {
      int y = v1[i];
      int y1 =
          (v2.size() - (upper_bound(v2.begin(), v2.end(), y) - v2.begin()));
      int k = min(i + 1, y1);
      if (k > m1) {
        m1 = k;
        idx = i;
      }
    }
    vector<int> v3;
    for (int i = 0; i <= idx; i++) v3.push_back(v1[i]);
    int y1 = upper_bound(v2.begin(), v2.end(), v1[idx]) - v2.begin();
    for (int i = v2.size() - 1; i >= 0; i--) {
      if (m1 == 0) break;
      v3.push_back(v2[i]);
      m1 = m1 - 1;
    }
    sort(v3.begin(), v3.end());
    string s1 = "";
    for (int i = 0; i < n; i++) {
      if (find(v3.begin(), v3.end(), i) != v3.end()) {
        v[cnt].push_back(i + 1);
        continue;
      } else
        s1 = s1 + s[i];
    }
    cnt += 1;
    s = s1;
  }
  cout << cnt << endl;
  for (int i = 0; i < cnt; i++) {
    cout << v[i].size() << endl;
    for (int j = 0; j < v[i].size(); j++) cout << v[i][j] << " ";
    cout << endl;
  }
}
