//I
#include<bits/stdc++.h>
using namespace std;
const int maxn = 4e5 + 10;
int T, n, m;
int a[maxn];
int solve1()
{
int res = ((a[1] + m < a[2]) ? 1 : 0);
int now = a[1] + m;
for (int i = 3; i <= (n << 1); i += 2)
{
int mn = min(a[i], a[i + 1]);
int mx = max(a[i], a[i + 1]); if (mn > now)
res += 2;
if (mn <= now && mx > now)
res++;
if (mx <= now)
{
int need = m - (now - mx) - (now - mn);
if (need > 0)
res++;
}
}
return res;
}
int solve2()
{
int res = ((a[1] < a[2] + m) ? 1 : 0), now = a[1]; for (int i = 3; i <= (n << 1); i += 2)
{
int mn = min(a[i], a[i + 1]);
int mx = max(a[i], a[i + 1]); if (mn > now) res += 2;
if (mn <= now && mx > now) res += 1 + ((now - mn < m) ? 1 : 0);
if (mx <= now)
{
if (now - mx < m)
res++;
if (m - (now - mx) > now - mn)
res++;
}
}
return res;
}
int main()
{
cin >> T;
while (T--)
{
cin >> n >> m;
for (int i = 1; i <= (n << 1); i++)
cin >> a[i];
cout << solve1() << ' ' << solve2() << '\n';
}
return 0;
}
//G
#include<bits/stdc++.h>
using namespace std;
int a, b, c;
int main()
{
cin >> a >> b >> c;
int m = max(b, a + 1);
// x1
cout << 1;
for (int i = 1; i <= m - 2; i++)
cout << 0;
cout << 1;
for (int i = 1; i <= a; i++)
cout << 0;
cout << ' ';
// y1
for (int i = 1; i <= m; i++)
cout << 9;
cout << ' ';
// x2
cout << 1;
for (int i = 1; i <= a + m - 1; i++)
cout << 0;
cout << ' ';
// y2
for (int i = 1; i <= m; i++)
cout << 9;
return 0;
}
//B
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int md=998244353;
int T,n,m,a[100010],f[100010],dp[100010],dpp[100010];
signed main(){
ios::sync_with_stdio(0);
cin>>T;
while(T--){
cin>>n>>m;
bool fl=0;
for(int i=0;i<=n*2+1;i++){
f[i]=dp[i]=dpp[i]=0;
}
for(int i=1;i<=m;i++){
cin>>a[i];
if(a[i]<1||a[i]>2*n){
fl=1;
}
}
if(fl){
cout<<0<<endl;
continue;
}
for(int i=1;i<=m;i++){
if(f[a[i]]){
fl=1;
}
f[a[i]]=1;
}
if(fl){
cout<<0<<endl;
continue;
}
dp[0]=1;
for(int pos=1;pos<=2*n;pos++){
for(int i=0;i<=n;i++){
dpp[i]=0;
}
for(int j=0;j<=n;j++){
if(dp[j]==0){
continue;
}
if(!f[pos]){
if(2*j>=pos){
dpp[j]=(dpp[j]+dp[j])%md;
}
}
if(j+1<=n){
int nj=j+1;
if(2*nj>=pos){
dpp[nj]=(dpp[nj]+dp[j])%md;
}
}
}
for(int i=0;i<=n;i++){
dp[i]=dpp[i];
}
}
cout<<dp[n]%md<<endl;
}
return 0;
}
//H
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 2e5 + 10;
const int mod = 998244353;
int T, n, x;
int a[maxn];
void write(__int128 x)
{
if (x > 9)
write(x / 10);
putchar(x % 10 + '0');
}void solve()
{
__int128 ans = 0, t = 0;
cin >> n >> x;
for (int i = 1; i <= n; i++)
cin >> a[i];
if (x == 1)
{
for (int i = 1; i <= n; i++)
ans = (ans + a[i]) % mod;
write(ans);
putchar('\n');
return ;
}
for (int i = 1; i <= n; i++)
{
t += a[i] / x;
a[i] %= x;
}
sort (a + 1, a + n + 1);
for (int i = n; i >= 1; i--)
{
if (!a[i]) continue;
int need = x - a[i] - 1;
if (need <= t)
{
t -= need;
a[i] = 0;
}
else break;
}
for (int i = 1; i <= n; i++)
ans = (ans + a[i]) % mod;
write((ans + t % (x - 1)) % mod);
putchar('\n');
return ;
}
signed main()
{
cin >> T;
while (T--)
solve();
return 0;
}
//K
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int inf=1e17;
int T,n,a,b,k,tot,s,t,cnt,hed[100010],ver[100010],nxt[100010],edg[100010];
int dis[100010],pre[100010],incf[100010],inq[100010],cost[100010];
int pa[100010],ca[100010],pb[100010],cb[100010];
int h[100010],ansflow,anscost;
void add(int a,int b,int c,int d){
ver[++tot]=b,nxt[tot]=hed[a],hed[a]=tot,edg[tot]=c,cost[tot]=d;
ver[++tot]=a,nxt[tot]=hed[b],hed[b]=tot,edg[tot]=0,cost[tot]=-d;
}
bool spfa(){
queue<int> q;
for(int i=0;i<=cnt;i++){
dis[i]=inf;
inq[i]=0;
}
dis[s]=0;
q.push(s);
inq[s]=1;
while(!q.empty()){
int u=q.front();
q.pop();
inq[u]=0;
for(int i=hed[u];i;i=nxt[i]){
int v=ver[i];
if(edg[i]>0&&dis[v]>dis[u]+cost[i]){
dis[v]=dis[u]+cost[i];
if(!inq[v]){
q.push(v);
inq[v]=1;
}
}
}
}
for(int i=0;i<=cnt;i++){
h[i]=(dis[i]==inf?0:dis[i]);
}
return dis[t]!=inf;
}
bool dijkstra(){
priority_queue<pair<int, int> > q;
for(int i=0;i<=cnt;i++){
dis[i]=inf;
pre[i]=incf[i]=0;
}
dis[s]=0;
incf[s]=inf;
q.push({0,s});
while(!q.empty()){
int d=-q.top().first,u=q.top().second;
q.pop();
if(dis[u]!=d){
continue;
}
for(int i=hed[u];i;i=nxt[i]){
int v=ver[i];
if(edg[i]>0){
int nd=d+cost[i]+h[u]-h[v];
if(dis[v]>nd){
dis[v]=nd;
pre[v]=i;
incf[v]=min(incf[u],edg[i]);
q.push({-nd,v});
}
}
}
}
return dis[t]!=inf;
}
void solve(){
cin>>n>>a>>b>>k;
for(int i=1;i<=a;i++){
cin>>pa[i]>>ca[i];
}
for(int i=1;i<=b;i++){
cin>>pb[i]>>cb[i];
}
//Ain=1+(u-1)*2,out=in+1
//Bin=a*2+(v-1)*2+1,out=in+1
s=0,t=a*2+b*2+1;
cnt=2*a+2*b+1,tot=1,anscost=0,ansflow=0;
for(int i=0;i<=cnt;i++){
hed[i]=0;
}
for(int u=1;u<=a;u++){
add(u*2-1,u*2,ca[u],0);
if(pa[u]==0){
add(s,u*2-1,inf,0);
continue;
}
add(pa[u]*2,u*2-1,inf,0);
}
for(int v=1;v<=b;v++){
add(a*2+v*2-1,a*2+v*2,cb[v],0);
if(pb[v]==0){
add(a*2+v*2,t,inf,0);
continue;
}
add(a*2+v*2,a*2+pb[v]*2-1,inf,0);
}
for(int i=1;i<=n;i++){
int x,y,w;
cin>>x>>y>>w;
add(x*2,a*2+y*2-1,1,-w);
}
if(k==0){
cout<<0<<endl;
return ;
}
if(!spfa()){
cout<<-1<<endl;
return;
}
while(ansflow<k&&dijkstra()){
for(int i=0;i<=cnt;i++){
if(dis[i]<inf){
h[i]+=dis[i];
}
}
int f=incf[t];
if(f>k-ansflow){
f=k-ansflow;
}
for(int i=t;i!=s;i=ver[pre[i]^1]){
edg[pre[i]]-=f;
edg[pre[i]^1]+=f;
}
ansflow+=f;
anscost+=f*(h[t]-h[s]);
}
if(ansflow<k){
cout<<-1<<endl;
return ;
}
cout<<-anscost<<endl;
}
signed main(){
ios::sync_with_stdio(0);
cin>>T;
while(T--){
solve();
}
return 0;
}