#include <bits/stdc++.h>
using namespace std;
template <typename T>
T next_int() {
  T x = 0, p = 1;
  char ch;
  do {
    ch = getchar();
  } while (ch <= ' ');
  if (ch == '-') {
    p = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + (ch - '0');
    ch = getchar();
  }
  return p * x;
}
string next_token() {
  char ch;
  string ans = "";
  do {
    ch = getchar();
  } while (ch <= ' ');
  while (ch > ' ') {
    ans += ch;
    ch = getchar();
  }
  return ans;
}
const long long INF = (long long)1e18;
const int INFINT = (int)1e9 + 227 + 1;
const int MAXN = (int)1e6 + 227 + 1;
const int MOD = (int)1e9 + 7;
const long double EPS = 1e-9;
long long bin_pow(long long a, long long b) {
  if (!b) return 1;
  long long ans = bin_pow(a, b / 2);
  ans = ans * ans;
  if (b % 2) ans = ans * a;
  return ans;
}
bool check(char c) {
  if (c == 'a') return 0;
  if (c == 'e') return 0;
  if (c == 'i') return 0;
  if (c == 'o') return 0;
  if (c == 'u') return 0;
  return 1;
}
int dp[MAXN];
int pr[MAXN];
int main() {
  string a = next_token();
  int n = a.size();
  for (int i = 0; i <= n; i++) {
    dp[i] = INFINT;
  }
  dp[0] = 0;
  pr[0] = -1;
  for (int i = 0; i < a.size(); i++) {
    int kek = 0, lol = 0;
    char last = '?';
    for (int j = i; j < a.size(); j++) {
      if (!check(a[j])) {
        kek = 0;
        lol = 0;
        last = '?';
      } else {
        kek++;
        lol += (last != a[j]);
        last = a[j];
      }
      if (kek >= 3 && lol > 1) {
        break;
      }
      if (dp[j + 1] > dp[i] + 1) {
        dp[j + 1] = dp[i] + 1;
        pr[j + 1] = i;
      }
    }
  }
  vector<string> ans;
  int p = a.size();
  while (p) {
    ans.push_back(a.substr(pr[p], p - pr[p]));
    p = pr[p];
  }
  for (int i = ans.size() - 1; i >= 0; i--) cout << ans[i] << " ";
  puts("");
}
