#include <bits/stdc++.h>
int isprime(long long p) {
  int i;
  double max = sqrt(p);
  for (i = 2; i <= max; i++)
    if (p % i == 0) break;
  if (i > max && p != 1) return 1;
  return 0;
}
long long gcd(long long a, long long b) {
  long long i;
  for (i = a < b ? a : b; i > 0; i--)
    if ((a % i == 0) && (b % i == 0)) break;
  return i;
}
int comp(const void *a, const void *b) { return (*(int *)a - *(int *)b); }
int issame(int *a, int *b, int l) {
  qsort(a, l, sizeof(int), comp);
  qsort(b, l, sizeof(int), comp);
  int i;
  for (i = 0; i < l; i++)
    if (a[i] != b[i]) break;
  if (i == l) return 1;
  return 0;
}
void swap(int *a, int *b) {
  int x = *a;
  *a = *b;
  *b = x;
}
int arrmax(int *a, int l) {
  int i;
  int max = a[0];
  for (i = 1; i < l; i++)
    if (a[i] > max) max = a[i];
  return max;
}
int arrmin(int *a, int l) {
  int i;
  int min = a[0];
  for (i = 1; i < l; i++)
    if (a[i] < min) min = a[i];
  return min;
}
long long fact(int a) {
  long long p = 1;
  while (a > 0) p *= a--;
  return p;
}
int min(int a, int b) {
  if (a > b) return b;
  return a;
}
int max(int a, int b) {
  if (a < b) return b;
  return a;
}
void sieve(int *a, int n) {
  n--;
  long long i, j;
  for (i = 2; i <= n; i++) a[i] = 0;
  for (i = 2; i <= n; i++)
    if (!a[i])
      for (j = i * i; j <= n; j += i)
        if (!a[j]) a[j]++;
}
int main(void) {
  int t;
  scanf("%d", &t);
  while (t--) {
    char b[100];
    scanf("%s", b);
    int l = strlen(b);
    char c[l / 2 + 1];
    int i;
    for (i = 1; i < l; i += 2) c[i / 2 + 1] = b[i];
    c[0] = b[0];
    for (i = 0; i < l / 2 + 1; i++) printf("%c", c[i]);
    printf("\n");
  }
  return 0;
}
