#include <bits/stdc++.h>
using namespace std;


long long getLastIndex(vector<long long> &price, long long target){
	int n = price.size();
	long long low = 0, high = n - 1;
	long long ans = -1;
	while(low <= high){
		long long mid = (low + high) / 2;
		if(price[mid] <= target){ 
			ans = mid;           
			low = mid + 1;       
		}
		else{
			high = mid - 1;
		}
	}
	return ans;
}

int main() {
	long long n, q, target;
	cin >> n >> q >> target; 
	vector<long long> queries;
	vector<long long> price;
	long long totalSum = 0;
	
	for(long long i = 0; i < n; i++){
		long long element;
		cin >> element;
		price.push_back(element);
		totalSum += element;
	}
	for(long long i = 0; i < q; i++){
		long long query;
		cin >> query;
		queries.push_back(query);
	}
	
	vector<long long> prefixSum(n + 1, 0);
	sort(price.begin(), price.end());
	
	for(long long i = 0; i < n; i++)
		prefixSum[i + 1] = prefixSum[i] + price[i];
		
	for(long long i = 0; i < q; i++){
		long long currentTarget = queries[i];
		long long largestIndexLessThanTarget = getLastIndex(price, currentTarget);
		
		long long leftPartSum = 0;
		long long rightPartSum = 0;
		
		if(largestIndexLessThanTarget >= 0)
			leftPartSum = currentTarget * (largestIndexLessThanTarget + 1) - prefixSum[largestIndexLessThanTarget + 1];
		else
			leftPartSum = 0;
			
		if(largestIndexLessThanTarget < n - 1)
			rightPartSum = totalSum - prefixSum[largestIndexLessThanTarget + 1] - currentTarget * (n - 1 - largestIndexLessThanTarget);
		else
			rightPartSum = 0;
			
		long long answer = leftPartSum + rightPartSum;
		cout << answer<<"\n";
	}
	return 0;
}