#pragma region Macros
#include <bits/stdc++.h>
#define SORT(x) sort((x).begin(), (x).end())
#define RSORT(x) sort((x).rbegin(), (x).rend())
#define ALL(x) (x).begin(), (x).end()
#define REV(x) reverse(ALL(x))
#define rep(i, n) for (ll i = 0; i < n; i++)
#define reps(i, m, n) for (ll i = m; i < n; i++)
#define repr(i, m, n) for (ll i = m; i >= n; i--)
#define SP << " " <<
#define INF2 1000000000000000037
#define INF  1000000007
#define lwb(x,n) distance(x.begin(),lower_bound(ALL(x),(n)))
#define upb(x,n) distance(x.begin(),upper_bound(ALL(x),(n)))
#define fora(i, ...) if(ll i = -1) for(__VA_ARGS__) if(i++, true)
#ifdef _MY_DEBUG
#define CHOOSE(a) CHOOSE2 a
#define CHOOSE2(a0,a1,a2,a3,x,...) x
#define debug_1(x1) cout<<#x1<<": "<<x1<<endl
#define debug_2(x1,x2) cout<<#x1<<": "<<x1<<", "#x2<<": "<<x2<<endl
#define debug_3(x1,x2,x3) cout<<#x1<<": "<<x1<<", "#x2<<": "<<x2<<", "#x3<<": "<<x3<<endl
#define debug_4(x1,x2,x3,x4) cout<<#x1<<": "<<x1<<", "#x2<<": "<<x2<<", "#x3<<": "<<x3<<", "#x4<<": "<<x4<<endl
#define de(...) CHOOSE((__VA_ARGS__,debug_4,debug_3,debug_2,debug_1,~))(__VA_ARGS__)
#else
#define de(...)
#endif
using namespace std;
using ll = long long;
using ld = long double;
template<class T = ll> using v = vector<T>;
template<class T = ll> using vv = vector<vector<T>>;
template<class T = ll> using vvv = vector<vector<vector<T>>>;
template<class T> bool maxi(T &a, const T &b){ if(a<b){a=b;return 1;}return 0;}
template<class T> bool mini(T &a, const T &b){ if(b<a){a=b;return 1;}return 0;}
template<class T> ll sumer(const T& a){ return accumulate(ALL(a),0LL); }
template<class T> void UNIQUE(vector<T> &a){ SORT(a);a.erase(unique(ALL(a)),a.end());}
template<class T, class U> ostream &operator<<(ostream &os, const pair<T,U> &pe) { os << pe.first << " " << pe.second; return os;}
template<class T> ostream &operator<<(ostream &os, const v<T> &ve) { rep(i,ve.size()) os<< (i?" ":"")<<ve[i]; return os;}
ll topbit(ll a) { return a==0?-1:63-__builtin_clzll(a);}
ll botbit(ll a) { return a==0?64:__builtin_ctzll(a);}
ll popcount(ll a) { return __builtin_popcountll(a);}
#define dame {cout<< retword <<"\n"; return;}
#pragma endregion
//--MODIFS---------------------------------
#pragma region Modifs
#define retword "-1"
#define MOD  1000000007
using P  = pair<ll,ll>;
using TP  = tuple<ll,ll,ll>;
#pragma endregion
//--GLOBAL---------------------------------
struct edge{ll to, cost;};
struct graph{
    ll N;
    vector<vector<edge> > G;
    vector<ll> d;

    graph(ll n): N(n), G(N), d(n,INF2) {}

    void ade(ll s, ll t, ll cost){
        G[s].emplace_back((edge){t, cost});
        // G[t].emplace_back((edge){s, cost}); //無向ならON
    }

    void dijkstra(ll s){
        d[s] = 0;
        priority_queue<P,vector<P>, greater<P> > que;
        que.emplace(0,s); // P < ans , Node >
        while(!que.empty()){
            P p = que.top(); que.pop();
            ll v = p.second;
            if(d[v] < p.first) continue;
            for(auto E: G[v]){
                if(mini(d[E.to], d[v]+E.cost)){
                    que.emplace(d[E.to], E.to);
                }
            }
        }
    }
};

//--MAIN-----------------------------------
void Main() {
    ll N,M,S;
    cin>>N>>M>>S;
    graph g(N*5010); // i*5010+j
    rep(i,M){
        ll u,v,a,b; cin>>u>>v>>a>>b; --u,--v;
        reps(j,a,5010){
            g.ade(u*5010+j,v*5010+j-a,b);
            g.ade(v*5010+j,u*5010+j-a,b);
        }
    }
    rep(i,N){
        ll c,d; cin>>c>>d;
        rep(j,5009){
            g.ade(i*5010+j,i*5010+min(5009LL,j+c),d);
        }
    }
    g.dijkstra((min(5009LL,S)));
    reps(i,1,N){
        ll ans=INF2;
        rep(j,5010){
            mini(ans,g.d[i*5010+j]);
        }
        cout<< ans <<"\n";
    }
}
//--START----------------------------------
int main() {
    cin.tie(nullptr);
    ios_base::sync_with_stdio(false);
    cout << fixed << setprecision(15);
    // ll Qkai; cin>>Qkai; rep(QQ,Qkai) Main();
    Main();
}
//-----------------------------------------

Measured memory_bytes: 44596