package main

import (
    "bufio"
    "fmt"
    "os"
)

// 计算一个数的质因子个数
func countPrimeFactors(x int) int {
    if x == 1 {
        return 0
    }
    count := 0
    for i := 2; i*i <= x; i++ {
        if x%i == 0 {
            count++
            for x%i == 0 {
                x /= i
            }
        }
    }
    if x > 1 {
        count++
    }
    return count
}

func main() {
    reader := bufio.NewReader(os.Stdin)
    writer := bufio.NewWriter(os.Stdout)
    defer writer.Flush()

    var n, k int
    fmt.Fscan(reader, &n, &k)

    a := make([]int, n)
    for i := 0; i < n; i++ {
        fmt.Fscan(reader, &a[i])
    }

    // 预处理权值数组,计算整个数组的权值和
    w := make([]int, n)
    total := 0
    for i := 0; i < n; i++ {
        w[i] = countPrimeFactors(a[i])
        total += w[i]
    }


    // 滑动窗口找出长度为k的最小和
    windowSum := 0
    for i := 0; i < k; i++ {
        windowSum += w[i]
    }
    minWindow := windowSum
    for i := k; i < n; i++ {
        windowSum += w[i] - w[i-k]
        if windowSum < minWindow {
            minWindow = windowSum
        }
    }

    // 结果产出
    ans := total - minWindow
    fmt.Fprintln(writer, ans)
}