//coder:luckYrat(twitter:@luckYrat_) //おすすめの曲 無機質世界に彩を-MisomyL //https://www.youtube.com/watch?v=8G590EiLQ3E //標準入出力 #include #include #include #include //コンテナ系 #include #include #include #include #include #include #include //複素数 #include #include #include #include #include //なまえくーかん! using namespace std; using ll = long long; using P = pair; //てーすう! const ll MOD = 1000000007; const ll MOD9 = 998244353; const int inf = (1<<30)-1; const ll linf = (1LL<<62LL)-1; const double EPS = (1e-10); //でふぁいん! #define anyfill(n,s) setw(n) << setfill(s) #define loop(s) for(int (i) = 0; (s) > (i); (i)++) #define rep(i,q) for(int (i) = 0; (q) > (i); (i)++) #define repp(i,n,q) for(int (i) = (n); (q) > (i); (i)++) #define dep(i,q) for(int (i) = (q); 0 < (i); (i)--) //みじかく! #define pb push_back #define mkp make_pair #define fir first #define scn second //きんぼーnほーこー!! P ar4[4] = {mkp(0,1),mkp(0,-1),mkp(1,0),mkp(-1,0)}; P ar8[8] = {mkp(-1,-1),mkp(-1,0),mkp(-1,1),mkp(0,-1),mkp(0,1),mkp(1,-1),mkp(1,0),mkp(1,1)}; template vector make_vector(size_t a, T b) { return vector(a, b); } template auto make_vector(size_t a, Ts... ts) { return vector(a, make_vector(ts...)); } /* 確認ポイント cout << fixed << setprecision(n) << 小数計算//n桁の小数表記になる 計算量は変わらないが楽できるシリーズ min(max)_element(iter,iter)で一番小さい(大きい)値のポインタが帰ってくる count(iter,iter,int)でintがiterからiterの間にいくつあったかを取得できる */ __attribute__((constructor)) void initial() { cin.tie(0); ios::sync_with_stdio(false); } int main(){ int n;cin>>n; vector A; set X; bool same = false; for(int i = 0; n > i; i++){ long long t;cin>>t; if(t){ if(X.count(t)){ same = true; } X.insert(t); A.push_back(t); } } if(same){ if(X.size() == 1){ cout << "Yes" << endl; }else{ cout << "No" << endl; } return 0; } if(A.size() <= 2){ cout << "Yes" << endl; return 0; } sort(A.begin(),A.end()); long long mn = A[1]-A[0]; for(int i = 0; A.size()-1 > i; i++){ mn = gcd(mn,A[i+1]-A[i]); } long long x = (A[A.size()-1]-A[0])/mn+1; //cout << x << " " << n << endl; if(x <= n){ cout << "Yes" << endl; }else{ cout << "No" << endl; } }