#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 111;
int N;
long long A[maxn];
map<long long, long long> f;
char bu[1111111], *cr, *cl;
void rl(long long &x) {
  char ch =
      cl == cr && (cr = (cl = bu) + fread(bu, 1, 1000000, stdin), cl == cr)
          ? EOF
          : *cl++;
  x = 0;
  while ((ch < '0' || ch > '9'))
    ch = cl == cr && (cr = (cl = bu) + fread(bu, 1, 1000000, stdin), cl == cr)
             ? EOF
             : *cl++;
  while (!(ch < '0' || ch > '9'))
    x = x * 10 + ch - '0',
    ch = cl == cr && (cr = (cl = bu) + fread(bu, 1, 1000000, stdin), cl == cr)
             ? EOF
             : *cl++;
}
int main() {
  scanf("%d", &N);
  for (int i = 1; i <= N; ++i) rl(A[i]);
  f[A[1] - 1] = 0;
  for (int i = 2; i <= N; ++i)
    for (map<long long, long long>::iterator j = f.lower_bound(A[i]);
         j != f.end(); f.erase(j++)) {
      long long x = j->first, y = j->second;
      f[x % A[i]] = max(f[x % A[i]], y + 1ll * (i - 1) * (x - x % A[i]));
      f[A[i] - 1] =
          max(f[A[i] - 1], y + 1ll * (i - 1) * A[i] * ((x - A[i] + 1) / A[i]));
    }
  long long ans = 0;
  for (map<long long, long long>::iterator i = f.begin(); i != f.end(); ++i)
    ans = max(ans, i->first * N + i->second);
  cout << ans;
  return 0;
}
