/*ソート使わずO(N)でやる解法*/ /*最大値,最小値からあるべき区間の長さを求めて一つ置きに存在してるか調べる*/ #include using namespace std; struct I{I(){ios::sync_with_stdio(false);cin.tie(0);}}init; bool test(int N,vector &x){ int top=0,bottom=1e9; for(auto &it:x)top=max(top,it),bottom=min(bottom,it); int L=top-bottom; if(L%(N-1)>0||L==0)return false; int sa=L/(N-1); vector cnt(N,0); for(auto &it:x){ it-=bottom; if(it%sa)return false; cnt[it/sa]=1; } int sum=0; for(auto &it:cnt)sum+=it; return N==sum; } int main(){ int N;cin>>N; vector x(N); for(auto &it:x)cin>>it; if(test(N,x))cout<<"YES"<