#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <set>
#include <string>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define REP(i, k, n) for (int i = (int)(k); i <(int)(n); i++)
#define rrep(i, n) for (int i = (int)(n)-1; i >= 0; i--)
#define rREP(i,k,n) for (int i = (int)(n)-1; i >= k; i--)
#define mod 1000000007
typedef long long lint;
long long dp[110][110][110] = {};
int main()
{
rep(i,101)rep(j,101)rep(k,101) dp[i][j][k] = 0;
int n,m;
cin >> n >> m;
rep(i,n) {
int a,b,c;
long long w;
cin >> a >> b >> c >> w;
dp[a][b][c] = max<lint>(dp[a][b][c],w);
}
rep(a,101){
rep(b,101){
rep(c,101){
if(a) dp[a][b][c] = max<lint>(dp[a][b][c],dp[a-1][b][c]);
if(b) dp[a][b][c] = max<lint>(dp[a][b][c],dp[a][b-1][c]);
if(c) dp[a][b][c] = max<lint>(dp[a][b][c],dp[a][b][c-1]);
}
}
}
rep(i,m){
int x,y,z;
cin >> x >> y >> z;
cout << dp[x][y][z] << endl;
}
return 0;
}