#include <bits/stdc++.h>
#define task "slime"
#define endl '\n'
#define ii pair<int, int>
#define iii pair<int, ii>
#define fi first
#define se second
#define MASK(i) (1LL << (i))
#define c_bit(i) __builtin_popcountll(i)
#define BIT(x, i) ((x) & MASK(i))
#define SET_ON(x, i) ((x) | MASK(i))
#define SET_OFF(x, i) ((x) &~ MASK(i))
#define ll long long
#define pll pair <ll, ll>
#define MingAnh signed main
using namespace std;

const int MOD = 1e9+7;
const int oo = 1e9;
const int BASE = 311;
const int N = 5e5;
int n, k, x;
int a[N + 20], b[N + 20], c[N + 20], t[N + 20];
pll calc (int i){
    ll l, r, up;
    up = (c[i] + a[i] - 1) / a[i];
    if (a[i] * up < x) return {0, 0};
    l = t[i] + (x + a[i] - 1) / a[i];
    r = t[i] + up + (a[i] * up - x + b[i] - 1) / b[i];
    return {l, r};
}
namespace sub1{
    int maxi = 0;
    bool check(){
        for (int i = 1; i <= n; ++i) maxi = max(maxi, t[i]);
        return n <= 1000 && k <= 1000 & maxi <= 100000;
    }

    int p[320000], ans = 0;

    void solve(){
        for (int i = 1; i <= n; ++i){
            ii res = calc(i);
            p[res.fi]++;
            p[res.se + 1]--;
        }

        int cnt = 0;
        for (int i = 1; i <= 300020; ++i){
            cnt += p[i];
            if (cnt >= k) ++ans;
        }

        cout << ans;
    }
}
namespace subfull{

    ll ans = 0;
    vector <pll> event;

    void solve(){
        for (int i = 1; i <= n; ++i){
            ii res = calc(i);
            event.push_back({res.fi, 1});
            event.push_back({res.se + 1, -1});
        }

        sort(event.begin(), event.end());

        int cnt = 0;
        for (int i = 0; i < event.size(); ++i){
            int j = i - 1;
            while (j + 1 < event.size() && event[j + 1].fi == event[i].fi) cnt += event[++j].se;
            if (cnt >= k && j + 1 < event.size()) ans += event[j + 1].fi - event[i].fi;
        }

        cout << ans;
    }
}
MingAnh()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    freopen(task".inp", "r", stdin);
    freopen(task".out", "w", stdout);
    cin >> n >> k >> x;
    for (int i = 1; i <= n; ++i){
        cin >> a[i] >> b[i] >> c[i] >> t[i];
    }

//    if (sub1::check()) return sub1::solve(), 0;
    subfull::solve();
    return 0;
}
/*
Making My Way aMing

*/

