#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pi;
typedef vector<int> vi;
#define all(c) (c).begin(),(c).end()
#define sz(c) (int)(c).size()
#define pb push_back
#define mp make_pair
#define fs first
#define sc second
#define x first
#define y second
#define y1 y1_gdssdfjsdgf
#define y0 y0_fsdjfsdogfs
#define ws ws_fdfsdfsdgfs
#define image(a) {sort(all(a)),a.resize(unique(all(a))-a.begin());}
#define eprintf(...) {fprintf(stderr,__VA_ARGS__),fflush(stderr);}
#define forn(i,n) for( int i = 0 ; i < (n) ; i++ )
#define forit(it,c) for( __typeof((c).begin()) it = (c).begin() ; it != (c).end() ; it++ )
#define problem_name "a"
const int maxn = (int)1e6;
const int sh = 1 << 19;
pair<int, int> rm[2 * sh + 10];
pair<int, int> get_rmq(int l, int r) {
l += sh;
r += sh;
pair<int, int> res = rm[l];
while (l <= r) {
res = max(res, rm[l]);
res = max(res, rm[r]);
l = (l + 1) / 2;
r = (r - 1) / 2;
}
return res;
}
int n, m;
int l[maxn];
vector<int> st, stl, str;
int r[maxn];
pair<int, pair<int, int> > ls[maxn];
void upd(int v, pair<int, int> x) {
v += sh;
rm[v] = x;
while (v > 1) {
v /= 2;
rm[v] = max(rm[v * 2], rm[v * 2 + 1]);
}
}
pair<int, int> inters(int i, int L, int R) {
return mp(max(0, min(R, r[i]) - max(L, l[i])), i);
}
pair<int, int> get_ans(int L, int R) {
int pl = upper_bound(all(stl), L) - stl.begin() - 1;
int pr = lower_bound(all(str), R) - str.begin();
pl = max(pl, 0);
pr = min(pr, sz(str) - 1);
pair<int, int> res = mp(0, -1);
res = max(res, inters(st[pl], L, R));
res = max(res, inters(st[pr], L, R));
if (pl + 1 <= pr - 1) {
res = max(res, get_rmq(pl + 1, pr - 1));
}
return res;
}
int main(){
#ifdef home
assert(freopen(problem_name".out","wt",stdout));
assert(freopen(problem_name".in","rt",stdin));
#endif
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++) {
scanf("%d %d", &l[i], &r[i]);
ls[i] = mp(l[i], mp(-r[i], i));
}
sort(ls, ls + n);
pair<int, int> mx = mp(-1, -1);
for (int i = 0; i < n; i++) {
int id = ls[i].y.y;
if (r[id] > mx.x) {
mx = mp(r[id], id);
st.pb(id);
stl.pb(l[id]);
str.pb(r[id]);
}
}
for (int i = 0; i < sz(st); i++) {
upd(i, mp(str[i] - stl[i], st[i]));
}
pair<ll, pair<int, int> > ans = mp((ll)0, mp(-1, -1));
for (int i = 0; i < m; i++) {
int l2, r2, c;
scanf("%d %d %d", &l2, &r2, &c);
pair<int, int> cur = get_ans(l2, r2);
ans = max(ans, mp((ll)c * cur.x, mp(cur.y, i)));
}
cout << ans.x << endl;
if (ans.x) {
cout << ans.y.x + 1 << " " << ans.y.y + 1 << endl;
}
return 0;
}