//
// main.cpp
// rmq
//
// Created by Catalina Brinza on 12/2/13.
// Copyright (c) 2013 Catalina Brinza. All rights reserved.
//
#include <fstream>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int main()
{int rmq[501][501][501];
int n,i,x,m,y,l,ji,z;
f>>n>>m;
for(i=1;i<=n;++i)
for (ji=1;ji<=n;++ji)
f>>rmq[i][ji][1];
for (l=2;l<=n;++l)
for (i=1;i<=n;++i)
for (ji=1;ji<=n;++ji)
{
rmq[i][ji][l]=rmq[i][ji][l-1];
if (i+l-1<=n && ji+l-1<=n && rmq[i][ji][l]< rmq[i][ji+1][l-1]) rmq[i][ji][l]= rmq[i][ji+1][l-1];
if (i+l-1<=n && ji+l-1<=n && rmq[i][ji][l]< rmq[i+1][ji][l-1]) rmq[i][ji][l]= rmq[i+1][ji][l-1];
if (rmq[i][ji][l]<rmq[i+l-1][ji+l-1][1]) rmq[i][ji][l]=rmq[i+l-1][ji+l-1][1];
}
for (i=0;i<m;++i)
{
f>>x>>y>>z;
g<<rmq[x][y][z]<<"\n";
}
return 0;
}