#include <bits/stdc++.h>
using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;
int table[3005][27][5][5];
bool trace[3005][27][5][5];
bool vowel[26];
string s;
int solve(int idx, int last, int eq, int block) {
  if (idx == s.size()) return 0;
  if (table[idx][last][eq][block] != -1) return table[idx][last][eq][block];
  auto& res = table[idx][last][eq][block];
  int now = s[idx] - 'a';
  if (vowel[now]) {
    res = solve(idx + 1, now, 0, 0);
  } else {
    res = 1 + solve(idx + 1, now, 1, 1);
    trace[idx][last][eq][block] = true;
    if (!(block == 2 && (now != last || eq == 1))) {
      int notDivide = 0;
      if (now == last)
        notDivide = solve(idx + 1, now, min(2, eq + 1), min(2, block + 1));
      else
        notDivide = solve(idx + 1, now, 1, min(2, block + 1));
      if (notDivide < res) {
        res = notDivide;
        trace[idx][last][eq][block] = false;
      }
    }
  }
  return res;
}
int main() {
  memset(table, -1, sizeof(table));
  cin >> s;
  vowel[0] = true;
  vowel['e' - 'a'] = true;
  vowel['i' - 'a'] = true;
  vowel['o' - 'a'] = true;
  vowel['u' - 'a'] = true;
  solve(0, 0, 0, 0);
  int idx = 0;
  int last = 0;
  int block = 0;
  int eq = 0;
  while (idx < s.size()) {
    if (trace[idx][last][eq][block]) {
      printf(" ");
      block = 1;
      eq = 1;
    } else if (vowel[s[idx] - 'a']) {
      block = 0;
      eq = 0;
    } else {
      block = min(2, block + 1);
      if (last == s[idx] - 'a')
        eq = min(2, eq + 1);
      else
        eq = 1;
    }
    printf("%c", s[idx]);
    last = s[idx] - 'a';
    idx++;
  }
  return 0;
}
