#include <stdio.h>
#include <vector>

using namespace std;

typedef pair<int, int> PII;
typedef pair<PII, int> PPII;
typedef pair<PII, double> PPID;
typedef vector<PPII> VPII;
typedef vector<PPID> VPID;

VPII q;
VPID gas;

double mm[120][120][240];

main() {
	int ds,m,n,f,k,a,b;
	int loc;
	double c;
	scanf("%d",&ds);
	while (ds--) {
		scanf("%d%d%d%d",&m,&n,&f,&k);
		gas.clear();
		for (int i=0;i<k;i++) {
			scanf("%d%d%lf",&a,&b,&c);
			gas.push_back(make_pair(make_pair(a,b),c));
		}
#ifndef NOCAP
		if (f >= m + n - 2) {
			printf("0.00\n");
			continue;
		}
#endif
		gas.push_back(make_pair(make_pair(m,n),0.0));
		q.clear();
		loc = 0;
		q.push_back(make_pair(make_pair(1,1),f));
		for (int i=0;i<120;i++)
			for (int j=0;j<120;j++)
				for (int jj=0;jj<240;jj++)
					mm[i][j][jj] = 1e99;
		mm[1][1][f] = 0.0;
		double best_end = 1e99;
		while (q.size() > loc) {
			PPII pi = q[loc++];
			//printf("I'm at (%d,%d) with %d gas having paid %lf\n",pi.first.first,pi.first.second,pi.second,mm[pi.first.first][pi.first.second][pi.second]);
			double best_gas = 1e99;
			for (int i=0;i<k;i++) {
				if (pi.first.first == gas[i].first.first && pi.first.second == gas[i].first.second && gas[i].second < best_gas) {
					best_gas = gas[i].second;
				}
			}
			if (pi.first.first == m && pi.first.second == n) {
				best_end <?= mm[pi.first.first][pi.first.second][pi.second];
			}
			for (int i=0;i<=k;i++) {
				int dd =  abs(pi.first.first - gas[i].first.first) +
						abs(pi.first.second - gas[i].first.second);
				if (dd <= f) {
					if (mm[gas[i].first.first][gas[i].first.second][f - dd] > (f - pi.second) * best_gas + mm[pi.first.first][pi.first.second][pi.second]) {
						mm[gas[i].first.first][gas[i].first.second][f - dd] = (f - pi.second) * best_gas + mm[pi.first.first][pi.first.second][pi.second];
						q.push_back(make_pair(make_pair(gas[i].first.first,gas[i].first.second),f-dd));
					}
					if (pi.second <= dd) {
						if (mm[gas[i].first.first][gas[i].first.second][0] > (dd - pi.second) * best_gas + mm[pi.first.first][pi.first.second][pi.second]) {
							mm[gas[i].first.first][gas[i].first.second][0] = (dd - pi.second) * best_gas + mm[pi.first.first][pi.first.second][pi.second];
							q.push_back(make_pair(make_pair(gas[i].first.first,gas[i].first.second),0));
						}
					} else {
						if (mm[gas[i].first.first][gas[i].first.second][pi.second-dd] > mm[pi.first.first][pi.first.second][pi.second]) {
							mm[gas[i].first.first][gas[i].first.second][pi.second-dd] = mm[pi.first.first][pi.first.second][pi.second];
							q.push_back(make_pair(make_pair(gas[i].first.first,gas[i].first.second),pi.second-dd));
						}
					}
				}
			}
		}
		if (best_end < 1e90) {
			printf("%.2lf\n",best_end);
		} else {
			printf("Stranded on the shoulder\n");
		}
	}
}
