#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> fw_correct(vector<vector<int>> W) {
	int n = (int)W.size();
	for (int b = 0; b < n; ++b)
		for (int a = 0; a < n; ++a)
			for (int c = 0; c < n; ++c)
				W[a][c] = min(W[a][c], W[a][b]+W[b][c]);
	return W;
}

vector<vector<int>> fw_wrong(vector<vector<int>> W) {
	int n = (int)W.size();
	for (int a = 0; a < n; ++a)
		for (int c = 0; c < n; ++c)
			for (int b = 0; b < n; ++b)
				W[a][c] = min(W[a][c], W[a][b]+W[b][c]);
	return W;
}

void print(const vector<vector<int>> &W) {
	int n = (int)W.size();
	for (int r = 0; r < n; ++r) {
		cout << '\t';
		for (int c = 0; c < n; ++c)
			cout << W[r][c] << "\t\n"[c+1==n];
	}
}

int main() {
	vector<vector<int>> W(4, vector<int>(4, 99));
	W[0][2] = W[2][0] = 1;
	W[2][3] = W[3][2] = 1;
	W[3][1] = W[1][3] = 1;
	
	cout << "Correct:" << endl;
	print(fw_correct(W));
	cout << "Wrong:" << endl;
	print(fw_wrong(W));
}