#include #include using namespace std; int N,A,B,C; long dp[2<<17][2]; main() { cin>>N>>A>>B>>C; for(int i=0;i > >Q; Q.push(make_pair(-A-B,make_pair(1,1))); while(!Q.empty()) { long c=-Q.top().first; int i=Q.top().second.first,j=Q.top().second.second; Q.pop(); if(dp[i][j]c+C) { dp[i*2%N][0]=c+C; Q.push(make_pair(-c-C,make_pair(i*2%N,0))); } long nc=c+A+(j==0?B:0); if(dp[(i+1)%N][1]>nc) { dp[(i+1)%N][1]=nc; Q.push(make_pair(-nc,make_pair((i+1)%N,1))); } } for(int i=0;i