#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
const long long INF = 0x3f3f3f3f;
const long long mod = 1e9 + 7;
const long long maxn = 1e6 + 5;
const double PI = acos(-1);
void std_quick_io() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
int main() {
  std_quick_io();
  string x;
  cin >> x;
  int cot = 0;
  vector<vector<int> > ans;
  while (1) {
    vector<int> num1;
    vector<int> num2;
    int ma = -1;
    vector<int> num;
    for (int i = (int)x.size() - 1; i >= 0; i--) {
      if (x[i] == ')') num2.push_back(i + 1);
    }
    for (int i = 0; i < (int)x.size(); i++) {
      if (x[i] == '(') {
        num1.push_back(i + 1);
      } else {
        num2.pop_back();
      }
      if (min((int)num1.size(), (int)num2.size()) >= ma) {
        ma = min((int)num1.size(), (int)num2.size());
        num.resize(2 * ma);
        for (int j = 0; j < ma; j++) {
          num[j] = num1[j];
        }
        for (int j = 0; j < ma; j++) {
          num[j + ma] = num2[j];
        }
      }
    }
    if (num.size() == 0) break;
    sort(num.begin(), num.end());
    for (int i = (int)num.size() - 1; i >= 0; i--) {
      int k = num[i] - 1;
      x.erase(x.begin() + k);
    }
    ans.push_back(num);
    cot++;
  }
  cout << cot << endl;
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i].size() << endl;
    for (int j = 0; j < ans[i].size(); j++) {
      if (j != 0) cout << " ";
      cout << ans[i][j];
    }
    cout << endl;
  }
  return 0;
}
