#include #include #include using namespace std; typedef vector VI; typedef vector VVI; int CountIntersections(const VVI &d, int i, int j) { set S; for (int k = 0; k < d.size(); k++) { if (k != i && k != j) S.insert (d[i][k] - d[k][j]); } return S.size(); } int ComputeLongest(const VVI &d, int r, int t) { int longest = 0; int n = int(d.size()); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { int intersections = CountIntersections(d, i, j); int total_time = d[i][j] * r + intersections * t; longest = max(longest, total_time); } } return longest; } int main() { int n, r, t; while (1) { cin >> n; if (n == 0) break; cin >> r >> t; VVI d(n,VI(n)); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) cin >> d[i][j]; cout << ComputeLongest(d, r, t) << endl; } return 0; }