#include using namespace std; typedef long long s64; const int D=998244353; s64 pow_mod(s64 x,int y){ s64 ans=1; while(y){ if(y&1)ans=ans*x%D; x=x*x%D;y>>=1; } return ans; } const int N=1e5+5; int p[N],c[N],ex[N],dfn[N],en[N]; vector lk[N]; int query(int i){ int ans=0; for(;i;i-=i&-i)ans+=c[i]; return ans; } void add(int i,int w){ for(;i qlk[N]; void dfs(int x,int fr){ fa[x]=fr; st[++top]=x; if(ex[x])qlk[top].push_back(x); fak[x]=st[max(1,top-k)]; dfn[x]=++tot; for(auto y:lk[x])dfs(y,x); en[x]=tot; --top; } int main(){ #ifdef kcz freopen("1.in","r",stdin);//freopen("1.out","w",stdout); #endif int tt; cin>>tt; while(tt--){ int n; cin>>n>>k; for(int i=1;i