#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for(int i=0;i<(n);i++) #define Inf 1000000001 int main(){ int N,M; cin>>N>>M; vector a(N); rep(i,N)cin>>a[i]; vector p(N); rep(i,N)cin>>p[i]; vector dp(M+1,-Inf); dp[0] = N; for(int i=N-1;i>=0;i--){ vector ndp(M+1,-Inf); rep(j,M+1){ ndp[j] = max(ndp[j],dp[j]); if(dp[j]!=-Inf){ if(j+a[i]<=M){ ndp[j+a[i]] = max(ndp[j+a[i]],i); } } } swap(dp,ndp); } if(dp[M]==-Inf){ cout<<-1< ans; int last = 0; //cout<=0 && dp[M-a[i]]>i){ if(ii==last-1 || p[ii]>p[i])ii = i; } } //cout<