#include <bits/stdc++.h>
#define ndl '\n'
#define ll long long
#define INF 1000000007
#define st first
#define nd second
#define debug(x) cout << #x << ": " << x << ndl
#define pb push_back
#define pob pop_back
#define pf push_front
#define pof pop_front
#define lb lower_bound
#define ub upper_bound
#define all(x) (x).begin(), (x).end()
using namespace std;
int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    ll n,k,m; cin>>n>>k>>m; 
    vector<vector<pair<ll,ll>>> cuksy(k+1, vector<pair<ll,ll>>());
    for(ll i=0;i<n;i++) {
        ll a,b,c; cin>>a>>b>>c;
        cuksy[a].push_back({b, c});
    }
    for(ll i=1;i<=k;i++) {
        if(cuksy[i].size() == 0) {
            cout<<0<<'\n';
            for(ll j=1;j<m;j++)
                cout<<-1<<'\n';
            return 0;
        }
    }
    vector<ll> mini_cena(m, -1), to_ale_ironicznie(m, -1);
    for(auto [b, c]: cuksy[1]) 
        if(to_ale_ironicznie[b%m] == -1 || to_ale_ironicznie[b%m] > c)
            to_ale_ironicznie[b%m] = c;
    
    for(ll ii = 2; ii<=k; ii++) {
        for(ll j = 0; j<m; j++) {
            mini_cena[j] = to_ale_ironicznie[j];
            to_ale_ironicznie[j] = -1LL;
        }
        for(auto [b, c]: cuksy[ii]) {
            for(ll j=0;j<m;j++) {
                if(mini_cena[j] == -1) continue;
                if(to_ale_ironicznie[(j + b)%m] == -1 || to_ale_ironicznie[(j + b)%m] > c + mini_cena[j]) {
                    to_ale_ironicznie[(j + b)%m] = c + mini_cena[j];
                } 
            }
        }
    }
    vector<pair<ll, ll>> mozliwosci;
    for(ll i=1; i<m; i++) {
        if(to_ale_ironicznie[i] != -1)
            mozliwosci.push_back({i, to_ale_ironicznie[i]});
    }
    // for(auto [a,b]:mozliwosci)
    //     cout<<a<<" "<<b<<"\n";
    vector<ll> dp(m, -1);
    dp[0] = 0;
    bool zm = 1;
    while(zm){
        zm = 0;
        for(ll i=0;i<m;i++)
            if(dp[i] != -1)
                for(auto [b, c]: mozliwosci)
                    if(dp[(b+i)%m] == -1 || dp[(b+i)%m] > c + dp[i]) {
                        zm = 1;
                        dp[(b+i)%m] = c + dp[i];
                    }
    }
        
    for(auto x:dp) cout<<x<<"\n";
}
        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84  | #include <bits/stdc++.h> #define ndl '\n' #define ll long long #define INF 1000000007 #define st first #define nd second #define debug(x) cout << #x << ": " << x << ndl #define pb push_back #define pob pop_back #define pf push_front #define pof pop_front #define lb lower_bound #define ub upper_bound #define all(x) (x).begin(), (x).end() using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n,k,m; cin>>n>>k>>m; vector<vector<pair<ll,ll>>> cuksy(k+1, vector<pair<ll,ll>>()); for(ll i=0;i<n;i++) { ll a,b,c; cin>>a>>b>>c; cuksy[a].push_back({b, c}); } for(ll i=1;i<=k;i++) { if(cuksy[i].size() == 0) { cout<<0<<'\n'; for(ll j=1;j<m;j++) cout<<-1<<'\n'; return 0; } } vector<ll> mini_cena(m, -1), to_ale_ironicznie(m, -1); for(auto [b, c]: cuksy[1]) if(to_ale_ironicznie[b%m] == -1 || to_ale_ironicznie[b%m] > c) to_ale_ironicznie[b%m] = c; for(ll ii = 2; ii<=k; ii++) { for(ll j = 0; j<m; j++) { mini_cena[j] = to_ale_ironicznie[j]; to_ale_ironicznie[j] = -1LL; } for(auto [b, c]: cuksy[ii]) { for(ll j=0;j<m;j++) { if(mini_cena[j] == -1) continue; if(to_ale_ironicznie[(j + b)%m] == -1 || to_ale_ironicznie[(j + b)%m] > c + mini_cena[j]) { to_ale_ironicznie[(j + b)%m] = c + mini_cena[j]; } } } } vector<pair<ll, ll>> mozliwosci; for(ll i=1; i<m; i++) { if(to_ale_ironicznie[i] != -1) mozliwosci.push_back({i, to_ale_ironicznie[i]}); } // for(auto [a,b]:mozliwosci) // cout<<a<<" "<<b<<"\n"; vector<ll> dp(m, -1); dp[0] = 0; bool zm = 1; while(zm){ zm = 0; for(ll i=0;i<m;i++) if(dp[i] != -1) for(auto [b, c]: mozliwosci) if(dp[(b+i)%m] == -1 || dp[(b+i)%m] > c + dp[i]) { zm = 1; dp[(b+i)%m] = c + dp[i]; } } for(auto x:dp) cout<<x<<"\n"; }  | 
            
        
                    English