#include using namespace std; #define ll long long ll sqr = 450; int main() { cin.tie(0)->sync_with_stdio(0); ll N, K; cin >> N >> K; vector seq(N); for (auto &i : seq) cin >> i; ll ans = 0; vector big(5 * 100000 + 1, 0); map small; ll dvojice = 0; int hi = 0; for (int lo = 0; lo < N; lo++) { while (hi < N) { dvojice += big[seq[hi]]; for (auto [x, cnt] : small) { if (gcd(x, seq[hi]) > 1) { dvojice += cnt; } } if (seq[hi] < sqr) { small[seq[hi]] += 1; }else { for (int i = 1; i * seq[hi] < big.size(); i++) big[i*seq[hi]]++; } hi ++; if (dvojice >= K) break; } // upd ans if (dvojice >= K) { ans += N - hi + 1; } // remove lo if (seq[lo] < sqr) { small[seq[lo]]--; if (small[seq[lo]] == 0) small.erase(seq[lo]); } else { for (int i = 1; i * seq[lo] < big.size(); i++) big[i*seq[lo]]++; } // remove dvojice from lo dvojice -= big[seq[lo]]; for (auto [x, cnt] : small) { if (gcd(x, seq[lo]) > 1) { dvojice -= cnt; } } } cout << ans << '\n'; }