//用的是freopen才能正常使用
1 #include<algorithm>
2 #include <iostream>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <stdio.h>
6 #include <math.h>
7 #include <time.h>
8 #include <vector>
9 #include <bitset>
10 #include <queue>
11 #include <map>
12 #include <set>
13 using namespace std;
14
15 namespace IO{
16 #define BUF_SIZE 100000
17 #define OUT_SIZE 100000
18 #define ll long long
19 //fread->read
20
21 bool IOerror=0;
22 inline char nc(){
23 static char buf[BUF_SIZE],*p1=buf+BUF_SIZE,*pend=buf+BUF_SIZE;
24 if (p1==pend){
25 p1=buf; pend=buf+fread(buf,1,BUF_SIZE,stdin);
26 if (pend==p1){IOerror=1;return -1;}
27 //{printf("IO error!\n");system("pause");for (;;);exit(0);}
28 }
29 return *p1++;
30 }
31 inline bool blank(char ch){return ch==' '||ch=='\n'||ch=='\r'||ch=='\t';}
32 inline void read(int &x){
33 bool sign=0; char ch=nc(); x=0;
34 for (;blank(ch);ch=nc());
35 if (IOerror)return;
36 if (ch=='-')sign=1,ch=nc();
37 for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';
38 if (sign)x=-x;
39 }
40 inline void read(ll &x){
41 bool sign=0; char ch=nc(); x=0;
42 for (;blank(ch);ch=nc());
43 if (IOerror)return;
44 if (ch=='-')sign=1,ch=nc();
45 for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';
46 if (sign)x=-x;
47 }
48 inline void read(double &x){
49 bool sign=0; char ch=nc(); x=0;
50 for (;blank(ch);ch=nc());
51 if (IOerror)return;
52 if (ch=='-')sign=1,ch=nc();
53 for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';
54 if (ch=='.'){
55 double tmp=1; ch=nc();
56 for (;ch>='0'&&ch<='9';ch=nc())tmp/=10.0,x+=tmp*(ch-'0');
57 }
58 if (sign)x=-x;
59 }
60 inline void read(char *s){
61 char ch=nc();
62 for (;blank(ch);ch=nc());
63 if (IOerror)return;
64 for (;!blank(ch)&&!IOerror;ch=nc())*s++=ch;
65 *s=0;
66 }
67 inline void read(char &c){
68 for (c=nc();blank(c);c=nc());
69 if (IOerror){c=-1;return;}
70 }
71 //fwrite->write
72 struct Ostream_fwrite{
73 char *buf,*p1,*pend;
74 Ostream_fwrite(){buf=new char[BUF_SIZE];p1=buf;pend=buf+BUF_SIZE;}
75 void out(char ch){
76 if (p1==pend){
77 fwrite(buf,1,BUF_SIZE,stdout);p1=buf;
78 }
79 *p1++=ch;
80 }
81 void print(int x){
82 static char s[15],*s1;s1=s;
83 if (!x)*s1++='0';if (x<0)out('-'),x=-x;
84 while(x)*s1++=x%10+'0',x/=10;
85 while(s1--!=s)out(*s1);
86 }
87 void println(int x){
88 static char s[15],*s1;s1=s;
89 if (!x)*s1++='0';if (x<0)out('-'),x=-x;
90 while(x)*s1++=x%10+'0',x/=10;
91 while(s1--!=s)out(*s1); out('\n');
92 }
93 void print(ll x){
94 static char s[25],*s1;s1=s;
95 if (!x)*s1++='0';if (x<0)out('-'),x=-x;
96 while(x)*s1++=x%10+'0',x/=10;
97 while(s1--!=s)out(*s1);
98 }
99 void println(ll x){
100 static char s[25],*s1;s1=s;
101 if (!x)*s1++='0';if (x<0)out('-'),x=-x;
102 while(x)*s1++=x%10+'0',x/=10;
103 while(s1--!=s)out(*s1); out('\n');
104 }
105 void print(double x,int y){
106 static ll mul[]={1,10,100,1000,10000,100000,1000000,10000000,100000000,
107 1000000000,10000000000LL,100000000000LL,1000000000000LL,10000000000000LL,
108 100000000000000LL,1000000000000000LL,10000000000000000LL,100000000000000000LL};
109 if (x<-1e-12)out('-'),x=-x;x*=mul[y];
110 ll x1=(ll)floor(x); if (x-floor(x)>=0.5)++x1;
111 ll x2=x1/mul[y],x3=x1-x2*mul[y]; print(x2);
112 if (y>0){out('.'); for (size_t i=1;i<y&&x3*mul[i]<mul[y];out('0'),++i); print(x3);}
113 }
114 void println(double x,int y){print(x,y);out('\n');}
115 void print(char *s){while (*s)out(*s++);}
116 void println(char *s){while (*s)out(*s++);out('\n');}
117 void flush(){if (p1!=buf){fwrite(buf,1,p1-buf,stdout);p1=buf;}}
118 ~Ostream_fwrite(){flush();}
119 }Ostream;
120 inline void print(int x){Ostream.print(x);}
121 inline void println(int x){Ostream.println(x);}
122 inline void print(char x){Ostream.out(x);}
123 inline void println(char x){Ostream.out(x);Ostream.out('\n');}
124 inline void print(ll x){Ostream.print(x);}
125 inline void println(ll x){Ostream.println(x);}
126 inline void print(double x,int y){Ostream.print(x,y);}
127 inline void println(double x,int y){Ostream.println(x,y);}
128 inline void print(char *s){Ostream.print(s);}
129 inline void println(char *s){Ostream.println(s);}
130 inline void println(){Ostream.out('\n');}
131 inline void flush(){Ostream.flush();}
132 #undef ll
133 #undef OUT_SIZE
134 #undef BUF_SIZE
135 };
136
137 const int N=100005,K=6;
138
139 int n,k,id[K][N],a[N][K],b[N][K],Num[N],pos[K],val[K],Ans,Ind;
140
141 int cmp(int x,int y)
142 {
143 return a[x][Ind]<a[y][Ind];
144 }
145
146 void solve()
147 {
148 IO::read(n);IO::read(k);
149 for(int i=1;i<=n;i++)
150 Num[i]=0;
151 for(int i=1;i<=k;i++)
152 IO::read(val[i]),pos[i]=1;
153 for(int i=1;i<=n;i++)
154 {
155 for(int j=1;j<=k;j++)
156 IO::read(a[i][j]);
157 for(int j=1;j<=k;j++)
158 IO::read(b[i][j]);
159 }
160 for(Ind=1;Ind<=k;Ind++)
161 {
162 for(int i=1;i<=n;i++)
163 id[Ind][i]=i;
164 sort(id[Ind]+1,id[Ind]+n+1,cmp);
165 }
166 Ans=0;
167 while(1)
168 {
169 int last=Ans;
170 for(int i=1;i<=k;i++)
171 {
172 while(pos[i]<=n&&a[id[i][pos[i]]][i]<=val[i])
173 {
174 int t=id[i][pos[i]];
175 Num[t]++;
176 if(Num[t]==k)
177 {
178 Ans++;
179 for(int j=1;j<=k;j++)
180 val[j]+=b[t][j];
181 }
182 pos[i]++;
183 }
184 }
185 if(Ans==last)
186 break;
187 }
188 IO::println(Ans);
189 for(int i=1;i<=k;i++)
190 IO::print(val[i]),IO::print(i!=k?' ':'\n');
191 }
192
193 int main()
194 {
195 int t;cin>>t;
196 while(t--)
197 solve();
198 return 0;
199 }