#include <cstdio> #include <algorithm> using namespace std; typedef long long LL; const int N=1000010; LL n,a[N],t,tmp[N],k,ans; void read(LL &x){char c;while((c=getchar())<'0'||c>'9');x=c-'0';while((c=getchar())>='0'&&c<='9') x=x*10+c-'0';} int main(){ //freopen("1045.in","r",stdin);freopen("1045.out","w",stdout); scanf("%lld",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]),a[i]+=a[i-1]; t=a[n]/n; tmp[n]=0; for(int i=1;i<n;i++) tmp[i]=i*t-a[n]+a[n-i]; std::sort(tmp+1,tmp+n+1); k=tmp[(n+1)>>1]; for(int i=1;i<=n;i++) ans+=abs(k-tmp[i]); printf("%lld",ans); return 0; }
inline long long multi(long long x,long long y,long long mod){ long long tmp=(x*y-(long long)((long double)x/mod*y+1.0e-8)*mod); return tmp<0 ? tmp+mod : tmp; }
#include <cstdio> using namespace std; typedef long long LL; LL a,x,c,n,m,g; inline long long multi(long long x,long long y,long long mod){ long long tmp=(x*y-(long long)((long double)x/mod*y+1.0e-8)*mod); return tmp<0 ? tmp+mod : tmp; } struct mat{ LL a[4][4]; void reset(){for(int i=0;i<4;i++) for(int j=0;j<4;j++) a[i][j]=0;} void set1(){reset();for(int i=0;i<4;i++) a[i][i]=1;} friend mat operator *(mat x,mat y){ mat z; z.reset(); for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) for(int k=0;k<=3;k++) (z.a[i][j]+=multi(x.a[i][k],y.a[k][j],m))%=m; return z; } }o,tmp,ans; int main(){ scanf("%lld%lld%lld%lld%lld%lld",&m,&a,&c,&x,&n,&g); a%=m,c%=m,x%=m; tmp.reset();tmp.a[1][1]=a;tmp.a[2][1]=c;tmp.a[2][2]=1; o.reset();o.a[1][1]=x;o.a[1][2]=1; ans.set1(); for(;n;n>>=1){if(n&1) ans=ans*tmp;tmp=tmp*tmp;} ans=o*ans; printf("%lld",ans.a[1][1]%m%g); return 0; }