#include using namespace std; using ll = long long; int main(){ ll N; cin>>N; vector A(N); for(ll i=0; i>A[i]; } ll min_cost=2LL*N; ll best_X=1; for(ll X=2; X+1=min_cost){ pruned=true; break; } ll current_value=A[i]; ll block_idx=current_value/X; ll next_block_start=(block_idx+1)*X; auto it= lower_bound(A.begin()+i+1,A.end(),next_block_start); i = distance(A.begin(),it); } if(!pruned){ ll total_cost=current_segments*cost_overhead; if(total_cost<=min_cost){ min_cost=total_cost; best_X=X; } } } cout<