#include <bits/stdc++.h>
const int N = 1e5 + 10;
typedef long long ll;
#define int long long
#define endl '\n'
#define INF 0x7fffffff
#define fi first
#define se second
#define pii pair<int, int>
#define YES \
{ \
cout << "YES" << endl; \
return; \
}
#define NO \
{ \
cout << "NO" << endl; \
return; \
}
using namespace std;
// struct node
// {
//
// };
//
// bool cmp(const node& x,node& y)
// {
// return x.<y.;
// }
void solve()
{
int n, m;
cin >> n >> m;
vector<int> a(n + 1, INT_MAX);
vector<int> b(n + 1, 0);
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
for (int i = 1; i <= n; i++)
{
cin >> b[i];
}
vector<pair<int, int>> p;
for (int i = 1; i <= n; i++)
{
if (i + 1 <= n && b[i] % b[i + 1] == 0)
{
int j = i;
while (j + 1 <= n && b[j] % b[j + 1] == 0)
{
j++;
}
p.push_back({i, j});
i = j;
}
}
int len = 0;
for (auto x : p)
{
int l = x.first, r = x.first;
int temp = a[r];
while (r <= x.second)
{
if (temp <= m)
len = max(len, r - l + 1);
r++;
if (r <= x.second)
temp += a[r];
else
break;
while (temp > m && l <= r)
{
temp -= a[l];
l++;
}
}
if (temp <= m)
len = max(len, r - l);
}
if (len == 0)
{
int x = *min_element(a.begin(),a.end());
if (x <= m) cout<<1<<endl;
else cout<<0<<endl;
}
else
{
cout << len << endl;
}
}
signed main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
int __ = 1;
cin >> __;
while (__--)
solve();
}
543. Diameter of Binary Tree | 124. Binary Tree Maximum Path Sum |
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts | 501A - Contest |
160A- Twins | 752. Open the Lock |
1535A - Fair Playoff | 1538F - Interesting Function |
1920. Build Array from Permutation | 494. Target Sum |
797. All Paths From Source to Target | 1547B - Alphabetical Strings |
1550A - Find The Array | 118B - Present from Lena |
27A - Next Test | 785. Is Graph Bipartite |
90. Subsets II | 1560A - Dislike of Threes |
36. Valid Sudoku | 557. Reverse Words in a String III |
566. Reshape the Matrix | 167. Two Sum II - Input array is sorted |
387. First Unique Character in a String | 383. Ransom Note |
242. Valid Anagram | 141. Linked List Cycle |
21. Merge Two Sorted Lists | 203. Remove Linked List Elements |
733. Flood Fill | 206. Reverse Linked List |