#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const long long INFLL = 1e18 + 1;
const int MAX = 200001;
const long long MOD = 1000000007;
const double PI = 3.14159265358979323846264338327;
long long inq(long long k, long long q, long long mod) {
  if (q == 0) return 1;
  long long l = inq(k, q / 2, mod);
  if (q % 2 == 0)
    return l * l % mod;
  else
    return l * l % mod * k % mod;
}
long long gcd(long long a, long long b) {
  if (a < b) swap(a, b);
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long cubr(long long a) {
  long long l = -1, r = 1e6 + 2;
  while (l < r - 1) {
    long long mid = (l + r) / 2;
    if (mid * mid * mid > a)
      r = mid;
    else
      l = mid;
  }
  return l;
}
long long max(long long a, long long b) {
  if (a > b) return a;
  return b;
}
long long min(long long a, long long b) { return -1 * max(-a, -b); }
long long possible(long long q) {
  if (q == INF) return -1;
  return q;
}
bool correct(int x, int xx) {
  if (x < 0) return 0;
  if (x >= xx) return 0;
  return 1;
}
long long dsumm(long long x, long long k) {
  long long y = 1;
  long long z = 0;
  for (int i = 0; y < 1e18; i++) {
    z += x / y % k;
    y *= k;
  }
  return z;
}
long long dcount(long long x) {
  long long y = 1;
  long long z = 0;
  int c[100];
  for (int i = 0; i < 10; i++) c[i] = 0;
  for (int i = 0; x > 0; i++) {
    if (c[x / y % 10] == 0) z++;
    c[x / y % 10] = 1;
    x /= 10;
  }
  return z;
}
long long lg10(long long x) {
  if (10000 <= x && x < 100000) return 5;
  if (x == 0) return 0;
  return lg10(x / 10) + 1;
}
long long g(long long x, long long mod) {
  if (x == 0) return 0;
  return x / mod + g(x / mod, mod);
}
bool is_digit(char c) { return ('0' <= c && c <= '9'); }
struct Matrix {
  long long a, b;
  vector<vector<long long>> x;
  Matrix(int a_, int b_) {
    a = a_;
    b = b_;
    x.resize(a);
    for (int(i) = 0; (i) != (a); i++) {
      x[i].resize(b);
    }
  }
};
Matrix MatrixMultiplication(Matrix M, Matrix N) {
  if (M.b != N.a) {
    exit(0);
  }
  long long k = M.b;
  Matrix K(M.a, N.b);
  for (int i = 0; i < M.a; i++) {
    for (int j = 0; j < N.b; j++) {
      for (int q = 0; q < k; q++) {
        K.x[i][j] += M.x[i][q] * N.x[q][j];
        K.x[i][j] %= MOD;
      }
    }
  }
  return K;
}
Matrix inqMatrix(Matrix A, long long q) {
  if (q == 0) {
    if (A.a == A.b) {
      Matrix C(A.a, A.b);
      for (int i = 0; i < A.a; i++) {
        C.x[i][i] = 1;
      }
      return C;
    } else {
      exit(0);
    }
  }
  if (q == 1) {
    return A;
  }
  Matrix L = inqMatrix(A, q / 2);
  L = MatrixMultiplication(L, L);
  if (q % 2 != 0) L = MatrixMultiplication(L, A);
  return L;
}
int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
long long n, m, k;
string s;
bool c(char a, char b, char c) {
  if (a == b && b == c) return 0;
  if (a == 'a' || a == 'e' || a == 'o' || a == 'u' || a == 'i') return 0;
  if (b == 'a' || b == 'e' || b == 'o' || b == 'u' || b == 'i') return 0;
  if (c == 'a' || c == 'e' || c == 'o' || c == 'u' || c == 'i') return 0;
  return 1;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> s;
  long long u = 0;
  for (int i = 0; i < s.size(); i++) {
    cout << s[i];
    if (i >= 1 && u == 0) {
      if (c(s[i - 1], s[i], s[i + 1])) {
        cout << " ";
        u = 1;
      } else {
        u = 0;
      }
    } else {
      u = 0;
    }
  }
}
