#include <bits/stdc++.h>
using namespace std;
const int MXN = 100005;
int a[MXN];
int b[MXN];
int c[MXN];
pair<int, int> a2[MXN];
pair<int, pair<int, int> > b2[MXN];
int n, m, s;
int fix[MXN];
int fix2[MXN];
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> m >> s;
  for (int i = 0; i < m; i++) {
    int v;
    cin >> v;
    a2[i] = pair<int, int>(v, i);
  }
  for (int i = 0; i < n; i++) cin >> b[i];
  for (int i = 0; i < n; i++) cin >> c[i];
  for (int i = 0; i < n; i++) {
    b2[i] = pair<int, pair<int, int> >(b[i], pair<int, int>(c[i], i));
  }
  sort(a2, a2 + m);
  sort(b2, b2 + n);
  for (int i = 0; i < m; i++) a[i] = a2[i].first;
  bool good = false;
  for (int i = 0; i < n; i++) {
    if (b2[i].first >= a[m - 1] && b2[i].second.first <= s) {
      good = true;
    }
  }
  if (!good) {
    cout << "NO\n";
    return 0;
  }
  int l = 1, r = m;
  while (l < r) {
    int md = (l + r) / 2;
    bool cn = true;
    int ts = 0;
    int cs = n - 1;
    priority_queue<pair<int, int>, vector<pair<int, int> >,
                   greater<pair<int, int> > >
        Q;
    for (int pos = m - 1; pos >= 0; pos -= md) {
      int dif = a[pos];
      while (cs >= 0 && b2[cs].first >= dif) {
        Q.push(pair<int, int>(b2[cs].second.first, b2[cs].second.second));
        cs--;
      }
      if (Q.empty()) {
        cn = false;
        break;
      }
      pair<int, int> stud = Q.top();
      Q.pop();
      if (ts + stud.first > s) {
        cn = false;
        break;
      }
      ts += stud.first;
    }
    if (cn) {
      r = md;
    } else {
      l = md + 1;
    }
  }
  priority_queue<pair<int, int>, vector<pair<int, int> >,
                 greater<pair<int, int> > >
      Q;
  int md = l;
  int cs = n - 1;
  for (int pos = m - 1; pos >= 0; pos -= md) {
    int dif = a[pos];
    while (cs >= 0 && b2[cs].first >= dif) {
      Q.push(pair<int, int>(b2[cs].second.first, b2[cs].second.second));
      cs--;
    }
    pair<int, int> stud = Q.top();
    Q.pop();
    for (int i = pos; (i > pos - md) && i >= 0; --i) {
      fix[i] = stud.second;
    }
  }
  cout << "YES\n";
  for (int i = 0; i < m; i++) {
    fix2[a2[i].second] = fix[i] + 1;
  }
  cout << fix2[0];
  for (int i = 1; i < m; i++) cout << " " << fix2[i];
  cout << "\n";
  return 0;
}
