#include <bits/stdc++.h>
using namespace std;
long long int btod(string v) {
  long long int sum = 0;
  for (int i = 0; i < v.size(); i++) {
    sum += pow(2, i) * v[i];
  }
  return sum;
}
string dtob(long long int a) {
  string v;
  while (a) {
    v.push_back(a % 2 + '0');
    a /= 2;
  }
  return v;
}
long long int findone(string a) {
  long long int c = 0;
  for (int i = 0; i < a.size(); i++) {
    if (a[i] == '1') c++;
  }
  return c;
}
long long int maxi(long long int a, long long int b) { return b > a ? b : a; }
long long int mini(long long int a, long long int b) { return b < a ? b : a; }
long long int find(long long int a, vector<long long int> &parent) {
  vector<long long int> parenti = parent;
  while (parenti[a] != a) {
    parenti[a] = parenti[parenti[a]];
    a = parenti[a];
  }
  return a;
}
long long int findi(long long int a, vector<long long int> &parenti) {
  while (parenti[a] != a) {
    a = parenti[a];
    parenti[a] = parenti[parenti[a]];
  }
  return (a);
}
void unioni(long long int x, long long int y, vector<long long int> &parent) {
  long long int x1 = find(x, parent);
  long long int y1 = find(y, parent);
  if (x1 < y1) {
    parent[y1] = x1;
  } else {
    parent[x1] = y1;
  }
}
void f(vector<vector<long long int>> &v, vector<bool> &visited,
       long long int s) {
  queue<long long int> q;
  q.push(s);
  while (!q.empty()) {
    long long int top = q.front();
    q.pop();
    for (int i = 0; i < v[top].size(); i++) {
      if (!visited[v[top][i]]) {
        visited[v[top][i]] = true;
        q.push(v[top][i]);
      }
    }
    visited[top] = true;
  }
}
void f1(vector<vector<long long int>> &v, vector<bool> &visited,
        long long int s) {
  queue<long long int> q;
  q.push(s);
  while (!q.empty()) {
    long long int top = q.front();
    q.pop();
    for (int i = 0; i < v[top].size(); i++) {
      if (!visited[v[top][i]]) {
        visited[v[top][i]] = true;
        q.push(v[top][i]);
      }
    }
  }
  visited[s] = false;
}
bool isblocked(long long int a, vector<long long int> &parent,
               vector<bool> &flag) {
  vector<long long int> parenti = parent;
  while (parenti[a] != a) {
    parenti[a] = parenti[parenti[a]];
    a = parenti[a];
  }
  if (flag[a]) return true;
  return false;
}
long long int power(long long int x, long long int y, long long int m) {
  if (y == 0) return 1;
  long long int p = power(x, y / 2, m) % m;
  p = (p * p) % m;
  return (y % 2 == 0) ? p : (x * p) % m;
}
long long int gcd(long long int a, long long int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long int modInverse(long long int a, long long int m) {
  long long int t = (power(a, m - 2, m)) % 1000000009;
  return t;
}
int main() {
  int n;
  cin >> n;
  vector<long long int> v(n);
  for (int i = 0; i < n; i++) cin >> v[i];
  long long int maxi = 1;
  long long int c = 1;
  for (int i = 0; i < n - 1; i++) {
    if (v[i + 1] > 2 * v[i]) {
      maxi = max(maxi, c);
      c = 1;
    } else {
      c++;
      maxi = max(maxi, c);
    }
  }
  cout << maxi;
}
