#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T Max(T a, T b) {
  return a > b ? a : b;
}
template <class T>
inline T Min(T a, T b) {
  return a > b ? b : a;
}
template <class T>
inline T _GCD(T a, T b) {
  if (b == 0) return a;
  return _GCD(b, a % b);
}
template <class T>
inline T _LCM(T a, T b) {
  T g = _GCD(a, b);
  return ((a / g) * b);
}
template <class T>
inline T big_mod(T a, T p, T MOD) {
  if (p == 0) return 1;
  T ret = big_mod(a, p / 2, MOD);
  ret = (ret * ret) % MOD;
  if (ret < 0) ret += MOD;
  if (p % 2) ret = (ret * a) % MOD;
  if (ret < 0) ret += MOD;
  return ret;
}
template <class T>
inline T power(T a, T p) {
  if (p == 0) return 1;
  long long ret = power(a, p / 2);
  ret = (ret * ret);
  if (p % 2) ret = (ret * a);
  return ret;
}
template <class T0, class T1, class T2>
inline T1 string_mod_ll(T0 s, T1 mm, T2 Sz) {
  T1 n = 0;
  for (int i = 0; i < Sz; i++) {
    n = n * 10 + (long long)(s[i] - '0');
    n %= mm;
  }
  return n;
}
int compare(string a, string b) {
  if (a == b) return 0;
  if (((int)a.size()) == ((int)b.size())) {
    for (int i = 0; i < ((int)a.size()); i++) {
      if (a[i] > b[i])
        return 1;
      else if (a[i] < b[i])
        return -1;
    }
    return -1;
  }
  if (((int)a.size()) > ((int)b.size())) return 1;
  return -1;
}
string string_add(string b, string a) {
  if (((int)a.size()) > ((int)b.size())) swap(a, b);
  a = string((((int)b.size()) - ((int)a.size())), '0') + a;
  int carry = 0, add;
  string res;
  for (int i = ((int)a.size()) - 1; i > -1; i--) {
    add = (int)(a[i] - '0') + (int)(b[i] - '0') + carry;
    carry = add / 10;
    res += (add % 10) + '0';
  }
  if (carry) res += carry + '0';
  reverse(res.begin(), res.end());
  return res;
}
string string_mul(string a, string b) {
  if (((int)a.size()) > ((int)b.size())) swap(a, b);
  string res, tres;
  int l = 0, carry, mul;
  for (int i = ((int)a.size()) - 1; i > -1; i--) {
    tres = string(l, '0');
    carry = 0;
    for (int j = ((int)b.size()) - 1; j > -1; j--) {
      mul = (int)(a[i] - '0') * (int)(b[j] - '0') + carry;
      carry = mul / 10;
      tres += (mul % 10) + '0';
    }
    if (carry) tres += carry + '0';
    reverse(tres.begin(), tres.end());
    res = string_add(tres, res);
    l++;
  }
  return res;
}
void cut_leading_zero(string &res) {
  int i;
  for (i = 0; i < ((int)res.size()); i++) {
    if (res[i] != '0') break;
  }
  res = res.substr(i);
  if (!((int)res.size())) res = "0";
  return;
}
int rr[] = {1, 1, 2, 2, -1, -1, -2, -2};
int cc[] = {2, -2, 1, -1, 2, -2, 1, -1};
using namespace std;
int val[500009], n;
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> val[i];
  sort(val + 1, val + n + 1);
  int cnt = n;
  for (int i = n / 2, j = n; i > 0; i--) {
    if (val[i] * 2 <= val[j]) {
      cnt--;
      j--;
    }
  }
  cout << cnt << endl;
  return 0;
}
