#include // #include #define rng(a) a.begin(),a.end() #define rrng(a) a.rbegin(),a.rend() #define INF 2000000000000000000 #define ll long long #define ld long double #define pll pair using namespace std; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> N >> K >> mod; vector A(N), B(N); for (ll i = 0; i < N; ++i) { cin >> A.at(i); A.at(i) %= mod; } for (ll i = 0; i < N; ++i) { cin >> B.at(i); B.at(i) %= mod; } sort(rng(A)); sort(rng(B)); ll l = -1, r = mod - 1; while (l + 1 != r) { ll m = (l + r) / 2; ll cnt = 0; for (ll i = 0; i < N; ++i) { ll a = A.at(i); if (a <= m) { ll left = m - a; cnt += upper_bound(rng(B), left) - B.begin(); } ll need = mod - a; ll cap_max = m + mod - a; cnt += upper_bound(rng(B), cap_max) - lower_bound(rng(B), need); } if (cnt >= K) { r = m; } else { l = m; } } cout << r << "\n"; }