#include <bits/stdc++.h>
using namespace std;
long long w[100010];
struct node {
  long long first, second;
  int i, id, type;
  bool operator<(const node& a) const {
    return first * a.second < second * a.first;
  }
};
int a[100010], b[100010];
vector<pair<int, int> > B;
vector<pair<int, pair<int, int> > > A[100010];
int main() {
  int n, m, i, j, k;
  scanf("%d%d%d", &k, &n, &m);
  for (i = 0; i < k; i++) scanf("%I64d", &w[i]);
  for (i = 0; i < n; i++) {
    int t, first, second;
    scanf("%d%d%d", &t, &first, &second);
    first--;
    if (t == 1) {
      if (second > w[first] && a[first] < second)
        a[first] = second, b[first] = i;
    } else if (t == 2) {
      A[first].push_back(make_pair(second, make_pair(i, 1)));
    } else
      B.push_back(make_pair(second, i));
  }
  sort(B.begin(), B.end());
  for (i = 0; i < k; i++) {
    if (a[i]) A[i].push_back(make_pair(a[i] - w[i], make_pair(b[i], 0)));
  }
  priority_queue<node> q;
  for (i = 0; i < k; i++) {
    a[i] = 0;
    if (A[i].size()) {
      sort(A[i].rbegin(), A[i].rend());
      q.push((node){A[i][0].first, w[i], i, A[i][0].second.first,
                    A[i][0].second.second});
    }
  }
  vector<pair<int, int> > ans;
  for (i = 0; i < m; i++) {
    if (B.empty() && q.empty()) break;
    if (q.empty()) {
      j = B.size() - 1;
      ans.push_back(make_pair(2, B[j].second));
      B.pop_back();
      continue;
    }
    if (!B.empty()) {
      j = B.size() - 1;
      node e = q.top();
      if ((B[j].first - 1) * e.second >= e.first) {
        ans.push_back(make_pair(2, B[j].second));
        B.pop_back();
        continue;
      }
    }
    node e = q.top();
    q.pop();
    ans.push_back(make_pair(e.type, e.id));
    w[e.i] += e.first;
    a[e.i]++;
    if (a[e.i] < A[e.i].size()) {
      q.push((node){A[e.i][a[e.i]].first, w[e.i], e.i,
                    A[e.i][a[e.i]].second.first, A[e.i][a[e.i]].second.second});
    }
  }
  sort(ans.begin(), ans.end());
  printf("%d\n", ans.size());
  for (i = 0; i < ans.size(); i++) printf("%d ", ans[i].second + 1);
  puts("");
}
