#include using namespace std; #define debug printf("%d %s\n",__LINE__,__FUNCTION__);fflush(stdout) using ll=long long;using i64=long long;using db=double; using u32=unsigned int;using u64=unsigned long long;using db=double; using pii=pair;using vi=vector; using qi=queue;using pqi=priority_queue;using si=set; #define pb push_back #define mk make_pair #define ins insert #define era erase #define fi first #define se second #define lowbit(x) x&-x #define ALL(a) a.begin(),a.end() const int INF=0x3f3f3f3f; const ll INFLL=0x3f3f3f3f3f3f3f3f; const double PI=acos(-1.0); templateinline bool chkmin(T&a,T b){return binline bool chkmax(T&a,T b){return a=m){ printf("1\n");return; } if(sum[n]>0){ chkmin(ans,(m-s[i]+sum[n]-1)/sum[n]+1); } } ss[0]=s[n]; for(int i=1;i<=n;i++){ ss[i]=max(0LL,ss[i-1]+a[i]); if(ss[i]>=m){ printf("2\n");return; } if(sum[n]>0){ chkmin(ans,(m-ss[i]+sum[n]-1)/sum[n]+2); } } sss[0]=ss[n]; for(int i=1;i<=n;i++){ sss[i]=max(0LL,sss[i-1]+a[i]); if(sss[i]>=m){ printf("3\n");return; } if(sum[n]>0){ chkmin(ans,(m-sss[i]+sum[n]-1)/sum[n]+3); } } if(sum[n]<=0){ printf("-1\n");return; } for(int i=1;i<=n;i++){ chkmax(fir,s[i]); } // for(int i=1;i<=n;i++){ // printf("%lld %lld\n",sum[i],s[i]); // } // ans=(m-fir+sum[n]-1)/sum[n]+1; printf("%lld\n",ans); } int main(){ #ifdef MULTI_CASES _w=scanf("%d",&_t);while(_t--) #endif solve(); return 0; }