#include <bits/stdc++.h>
using namespace std;
const int N = 801100;
struct aa {
  int px, py, c, poz;
};
long long rez;
int n, m, r1, r2, nr;
vector<int> rr;
map<int, int> conv;
aa p[N], x[N];
bool cmp(aa a, aa b) { return a.px < b.px; }
int aint[4 * N];
int elm(int a, int b) {
  if (x[a].py - x[a].px > x[b].py - x[b].px) return a;
  return b;
}
void update(int nod, int pozx, int pozy, int poz, int el) {
  if (pozx == pozy) {
    aint[nod] = elm(aint[nod], el);
    return;
  }
  int mid = (pozx + pozy) / 2;
  if (mid >= poz)
    update(2 * nod, pozx, mid, poz, el);
  else
    update(2 * nod + 1, mid + 1, pozy, poz, el);
  aint[nod] = elm(aint[2 * nod], aint[2 * nod + 1]);
}
int query(int nod, int pozx, int pozy, int poz) {
  if (pozy <= poz) return aint[nod];
  int mid = (pozx + pozy) / 2, r = 0;
  if (mid < poz) r = query(2 * nod + 1, mid + 1, pozy, poz);
  r = elm(r, query(2 * nod, pozx, mid, poz));
  return r;
}
void upd(int p1, int p2) {
  long long rc =
      1LL * p[p1].c * (min(p[p1].py, x[p2].py) - max(p[p1].px, x[p2].px));
  if (rc > rez) {
    rez = rc;
    r1 = p[p1].poz;
    r2 = x[p2].poz;
  }
}
bool cmp2(aa a, aa b) { return a.py > b.py; }
void calcrez() {
  int i, j, cmax;
  sort(x + 1, x + n + 1, cmp2);
  sort(p + 1, p + n + 1, cmp2);
  cmax = 0;
  for (j = 1, i = 1; i <= m; ++i) {
    while (j <= n && x[j].py >= p[i].py) {
      if (!cmax || x[j].px < x[cmax].px) cmax = j;
      ++j;
    }
    upd(i, cmax);
  }
  sort(x + 1, x + n + 1, cmp);
  sort(p + 1, p + m + 1, cmp);
  cmax = 0;
  for (j = 1, i = 1; i <= m; ++i) {
    while (j <= n && x[j].px <= p[i].px) {
      if (x[j].py > x[cmax].py) cmax = j;
      ++j;
    }
    upd(i, cmax);
  }
  for (i = m, j = n; i; --i) {
    while (j && x[j].px >= p[i].px) {
      update(1, 1, nr, conv[x[j].py], j);
      --j;
    }
    int rmax = query(1, 1, nr, conv[p[i].py]);
    if (rmax) upd(i, rmax);
  }
}
int main() {
  int i;
  cin >> n >> m;
  x[0].px = -1;
  for (i = 1; i <= n; ++i) {
    scanf("%d%d", &x[i].px, &x[i].py);
    rr.push_back(x[i].px);
    rr.push_back(x[i].py);
    x[i].poz = i;
  }
  for (i = 1; i <= m; ++i) {
    scanf("%d%d%d", &p[i].px, &p[i].py, &p[i].c);
    rr.push_back(p[i].px);
    rr.push_back(p[i].py);
    p[i].poz = i;
  }
  sort(rr.begin(), rr.end());
  for (i = 0; i < rr.size(); ++i) {
    if (!i || rr[i] != rr[i - 1]) ++nr;
    conv[rr[i]] = nr;
  }
  calcrez();
  cout << rez << "\n";
  if (rez) cout << r2 << " " << r1;
  return 0;
}
