#include <vector>
#include <iostream>
#include <algorithm>
template<typename T>
int upperBound(const std::vector<T>& vec, const T& target) {
	int left = 0;
	int right = vec.size();
	while (left < right) {
		auto mid = (left + right) / 2;
		if (vec[mid] <= target) {
			left = mid + 1;
		}
		else {
			right = mid;
		}
	}
	return right;
}
int main() {
	int n; std::cin >> n;
	std::vector<long long int> a(n);
	for (auto& ai : a) std::cin >> ai;
	std::sort(a.begin(), a.end());
	std::vector<long long int> sum(n + 1, 0);
	for (auto i = 1; i < sum.size(); ++i) sum[i] += a[i - 1] + sum[i - 1];
	int m; std::cin >> m;
	std::vector<long long int> b(m), c(m);
	for (auto& bi : b) std::cin >> bi;
	for (auto& ci : c) std::cin >> ci;
	for (auto i = 0; i < m; ++i) {
		if (sum[upperBound(a, b[i])] >= c[i]) std::cout << "Yes\n";
		else std::cout << "No\n";
	}
}
