#include<bits/stdc++.h>
#define iii pair<int, pair<int, int> >
using namespace std;
bool visited[55][1005];
int dist[55][1005];
int tolls[55][55];
int times[55][55];
int n, p;
void dijkstra() {
priority_queue<iii, vector<iii >, greater<iii > > pq;
pq.push(make_pair(0, make_pair(1, 0)));
dist[1][0]=0;
while (!pq.empty()) {
iii top=pq.top();
pq.pop();
int nd=(top.second).first;
int ndtime=(top.second).second;
visited[nd][ndtime]=1;
for (int i=1; i<=n; i++) {
int toll=tolls[nd][i];
int time=times[nd][i];
if (time+ndtime<=p && nd!=i) {
if (!visited[i][time+ndtime]) {
if (dist[i][time+ndtime]>dist[nd][ndtime]+toll) {
dist[i][time+ndtime]=dist[nd][ndtime]+toll;
pq.push(make_pair(dist[i][time+ndtime], make_pair(i, time+ndtime)));
}
}
}
}
}
}
main() {
while (1) {
scanf("%d %d", &n, &p);
if (n==0 && p==0) break;
for (int i=0; i<55; i++) {
for (int j=0; j<1005; j++) {
dist[i][j]=1<<30;
visited[i][j]=0;
}
}
for (int i=1; i<=n; i++) {
for (int j=1; j<=n; j++) scanf("%d", ×[i][j]);
}
for (int i=1; i<=n; i++) {
for (int j=1; j<=n; j++) scanf("%d", &tolls[i][j]);
}
dijkstra();
int ans=1<<30, index;
for (int i=1; i<=p; i++) {
if (ans>dist[n][i]) {
ans=dist[n][i];
index=i;
}
}
printf("%d %d\n", ans, index);
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBpaWkgcGFpcjxpbnQsIHBhaXI8aW50LCBpbnQ+ID4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgdmlzaXRlZFs1NV1bMTAwNV07CmludCBkaXN0WzU1XVsxMDA1XTsKaW50IHRvbGxzWzU1XVs1NV07CmludCB0aW1lc1s1NV1bNTVdOwppbnQgbiwgcDsKCnZvaWQgZGlqa3N0cmEoKSB7CiAgICBwcmlvcml0eV9xdWV1ZTxpaWksIHZlY3RvcjxpaWkgPiwgZ3JlYXRlcjxpaWkgPiA+IHBxOwogICAgcHEucHVzaChtYWtlX3BhaXIoMCwgbWFrZV9wYWlyKDEsIDApKSk7CiAgICBkaXN0WzFdWzBdPTA7CiAgICB3aGlsZSAoIXBxLmVtcHR5KCkpIHsKICAgICAgICBpaWkgdG9wPXBxLnRvcCgpOwogICAgICAgIHBxLnBvcCgpOwogICAgICAgIGludCBuZD0odG9wLnNlY29uZCkuZmlyc3Q7CiAgICAgICAgaW50IG5kdGltZT0odG9wLnNlY29uZCkuc2Vjb25kOwogICAgICAgIHZpc2l0ZWRbbmRdW25kdGltZV09MTsKICAgICAgICBmb3IgKGludCBpPTE7IGk8PW47IGkrKykgewogICAgICAgICAgICBpbnQgdG9sbD10b2xsc1tuZF1baV07CiAgICAgICAgICAgIGludCB0aW1lPXRpbWVzW25kXVtpXTsKICAgICAgICAgICAgaWYgKHRpbWUrbmR0aW1lPD1wICYmIG5kIT1pKSB7CiAgICAgICAgICAgICAgICBpZiAoIXZpc2l0ZWRbaV1bdGltZStuZHRpbWVdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRpc3RbaV1bdGltZStuZHRpbWVdPmRpc3RbbmRdW25kdGltZV0rdG9sbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkaXN0W2ldW3RpbWUrbmR0aW1lXT1kaXN0W25kXVtuZHRpbWVdK3RvbGw7CiAgICAgICAgICAgICAgICAgICAgICAgIHBxLnB1c2gobWFrZV9wYWlyKGRpc3RbaV1bdGltZStuZHRpbWVdLCBtYWtlX3BhaXIoaSwgdGltZStuZHRpbWUpKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgptYWluKCkgewogICAgd2hpbGUgKDEpIHsKICAgICAgICBzY2FuZigiJWQgJWQiLCAmbiwgJnApOwogICAgICAgIGlmIChuPT0wICYmIHA9PTApIGJyZWFrOwogICAgICAgIGZvciAoaW50IGk9MDsgaTw1NTsgaSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajwxMDA1OyBqKyspIHsKICAgICAgICAgICAgICAgIGRpc3RbaV1bal09MTw8MzA7CiAgICAgICAgICAgICAgICB2aXNpdGVkW2ldW2pdPTA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgaj0xOyBqPD1uOyBqKyspIHNjYW5mKCIlZCIsICZ0aW1lc1tpXVtqXSk7CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IGk9MTsgaTw9bjsgaSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGo9MTsgajw9bjsgaisrKSBzY2FuZigiJWQiLCAmdG9sbHNbaV1bal0pOwogICAgICAgIH0KICAgICAgICBkaWprc3RyYSgpOwogICAgICAgIGludCBhbnM9MTw8MzAsIGluZGV4OwogICAgICAgIGZvciAoaW50IGk9MTsgaTw9cDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChhbnM+ZGlzdFtuXVtpXSkgewogICAgICAgICAgICAgICAgYW5zPWRpc3Rbbl1baV07CiAgICAgICAgICAgICAgICBpbmRleD1pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwcmludGYoIiVkICVkXG4iLCBhbnMsIGluZGV4KTsKICAgIH0KfQo=