#include <bits/stdc++.h>
using namespace std;
#define modulo ll (1e9 + 7)
#define neig(a, u, e, v) for(int v, e = (a).head[u] ; ~e and (v = (a).to[e], 1) ; e = (a).nxt[e])
typedef long long ll;
const int N = 2e5 + 9, M = 1e6 + 9, OO = 0x3f3f3f3f;
const ll llOO = 0x3f3f3f3f3f3f3f3f;
ll sum(ll l, ll r){
l--;
ll total = (r * (r + 1) / 2)%modulo;
total -= (l * (l + 1) / 2)%modulo;
total%=modulo;
return (total+modulo)%modulo;
}
int main() {
cin.tie(0);
cin.sync_with_stdio(0);
ll l, r, x, y, k; cin >> l >> r >> x >> y >> k; //rest after k problems about y minutes
// x minute for 1
ll ans = (sum(l,r) * x%modulo) %modulo;
l-- , r--;
ll rr= (r/k + 1)*k - 1;
ll L = (l/k )*k;
ll ans1 = sum(L/k , rr/k) * ( k%modulo);
ans1 %= modulo;
ll ans2 = (l-L)%modulo * (L/k)%modulo;
ans2 %=modulo;
ll ans3 = (rr-r )%modulo * (rr/k)%modulo;
ans3%=modulo;
ans1-=ans2;
ans1-=ans3;
ans1%=modulo;
ans1 = (ans1 +modulo)%modulo;
ans1 *= y%modulo;
ans1 %=modulo ;
cout<<(ans1 + ans)%modulo;
}
Copy