#include<bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define F first
#define S second
#define pi acos(-1.0)
#define pb push_back
#define sf(x) scanf("%lld",&x)
#define pf(x) printf("%lld",&x)
using namespace std;
const int mod=1e9+7;
int a[400000],b[400000],a1[400000],a2[400000],c,d,n,m ;
bool comp(int a , int b) {return a>b ;}
int32_t main()
{
    ios_base::sync_with_stdio(0) ; cin.tie(0) ; cout.tie(0) ;
    int t ; cin>>t ;
    while(t--)
    {
        cin>>n>>m ; c=0 ; d=0 ;
        int ans=4*n,sm=0,fl=0 ;
        for(int i = 1 ; i <= n ; i++) cin>>a[i] ;
        for(int i = 1 ; i <= n ; i++) cin>>b[i] ;
        for(int i = 1 ; i <= n ; i++)
        {
            if(b[i]==1){a1[++c]=a[i] ; }
            else if(b[i]==2){a2[++d]=a[i] ;}
        }
        sort(a2+1,a2+d+1,comp) ; sort(a1+1,a1+c+1,comp) ;
        for(int i = 2 ; i <= d ; i++) a2[i]+=a2[i-1] ;
        for(int i = 0 ; i <= c ; i++)
        {
            sm+=a1[i] ; int p=m-sm ;
            if(sm>=m){ans=min(ans,i) ; fl=1 ; break ; }
            if(d==0) continue ;
            int id=lower_bound(a2,a2+d+1,p)-a2 ;
            if(id<=d)
            {
                fl=1 ;
                ans=min(ans,(i+(id*2))) ;
            }
        }
        if(fl) cout<<ans<<endl ; else cout<<"-1"<<endl ; cout<<endl ;
    }
}
