#include <bits/stdc++.h>
#pragma GCC optimize("O2")
#pragma GCC optimize("unroll-loops")
using namespace std;
const long double eps = 1e-7;
const int inf = 1000000010;
const long long INF = 10000000000000010LL;
const int mod = 1000000007;
const int MAXN = 100010, LOG = 20;
int n, m, k, u, v, x, y, t, a, b, ans;
bool dead[MAXN];
string A;
vector<vector<int>> out;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> A;
  n = A.size();
  while (1) {
    int i = 0, j = n - 1;
    vector<int> v1, v2;
    while (i < j) {
      while (i < j && (A[i] == ')' || dead[i])) i++;
      while (i < j && (A[j] == '(' || dead[j])) j--;
      if (i >= j || A[i] == ')' || A[j] == '(') break;
      v1.push_back(i++);
      v2.push_back(j--);
    }
    if (v1.empty()) break;
    reverse(v2.begin(), v2.end());
    for (int i : v2) v1.push_back(i);
    for (int i : v1) dead[i] = 1;
    out.push_back(v1);
  }
  cout << out.size() << '\n';
  for (auto vec : out) {
    cout << vec.size() << '\n';
    for (int i : vec) cout << i + 1 << ' ';
    cout << '\n';
  }
  return 0;
}
