#include <bits/stdc++.h>
int scan() {
  int noRead = 0;
  char p = getchar();
  for (; p < 33;) {
    p = getchar();
  }
  while (p > 32) {
    noRead = (noRead << 3) + (noRead << 1) + (p - '0');
    p = getchar();
  }
  return noRead;
}
long long int lscan() {
  long long int noRead = 0;
  char p = getchar();
  for (; p < 33;) {
    p = getchar();
  }
  while (p > 32) {
    noRead = (noRead << 3) + (noRead << 1) + (p - '0');
    p = getchar();
  }
  return noRead;
}
using namespace std;
bool flag = false;
int beau(char ss[100010], int n) {
  int zeros = 0;
  int ones = 0;
  int j = 0;
  while (j < n && ss[j] == '0') {
    j++;
  }
  for (int i = j; i < n; ++i) {
    if (ss[i] != '1' && ss[i] != '0') return -1;
    if (ss[i] == '0')
      zeros++;
    else
      ones++;
  }
  if (ones > 1) return -1;
  if (ones == 0 && zeros == 0) flag = true;
  return zeros;
}
char s[100011];
char num[100010];
char z[100010];
char zz[100010];
int main(void) {
  int n;
  scanf("%d", &n);
  int zeros = 0;
  bool exists = false;
  for (int i = 0; i < n; ++i) {
    scanf("%s", s);
    int b = beau(s, strlen(s));
    if (b != -1) {
      zeros += b;
    } else {
      strcpy(num, s);
      exists = true;
    }
  }
  if (flag) {
    printf("0");
    return 0;
  }
  if (exists)
    printf("%s", num);
  else
    printf("1");
  int i;
  for (i = 0; i < zeros; ++i) zz[i] = '0';
  printf("%s", zz);
  return 0;
}
