#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
#include<algorithm>
#include<time.h>
#include<stack>
using namespace std;
#define p 1200000
#define INF 0x3f3f3f3f
int main()
{
int dp[p];
int a[p];
int N,S,T,i,j;
scanf("%d",&T);
while(T--)
{
scanf("%d %d",&N,&S);
memset(dp,0,sizeof(dp));/*把数组dp的值初始化为0*/
#include<string.h>
#include<math.h>
#include<queue>
#include<algorithm>
#include<time.h>
#include<stack>
using namespace std;
#define p 1200000
#define INF 0x3f3f3f3f
int main()
{
int dp[p];
int a[p];
int N,S,T,i,j;
scanf("%d",&T);
while(T--)
{
scanf("%d %d",&N,&S);
memset(dp,0,sizeof(dp));/*把数组dp的值初始化为0*/
for(i = 1;i <= N;i++)
{
scanf("%d",&a[i]);
dp[i] = dp[i-1]+a[i];
}/*将录入的数据进行累加*/
{
scanf("%d",&a[i]);
dp[i] = dp[i-1]+a[i];
}/*将录入的数据进行累加*/
int MIN = INF,i = 1;
for(j = 1;j <= N;j++)
{
if(dp[j]-dp[i-1] < S) continue;
while(dp[j]-dp[i] >= S) i++;
MIN = min(MIN,j-i+1);
}/*让dp的每一项(数列前n项的和)减去前(2……n-1)项的和与给定的值比较*/
for(j = 1;j <= N;j++)
{
if(dp[j]-dp[i-1] < S) continue;
while(dp[j]-dp[i] >= S) i++;
MIN = min(MIN,j-i+1);
}/*让dp的每一项(数列前n项的和)减去前(2……n-1)项的和与给定的值比较*/
if(MIN == INF) printf("0\n");
else printf("%d\n",MIN);
}
return 0;
}
else printf("%d\n",MIN);
}
return 0;
}