#include <bits/stdc++.h>
using namespace std;
const int N=105;  // 数组最大长度(题目中n≤100,留冗余)

// 变量说明:
// a数组:用于计算“最大寒潮次数”的温度序列(对未知温度做最大化寒潮的赋值)
// b数组:用于计算“最小寒潮次数”的温度序列(对未知温度做最小化寒潮的赋值)
// dpa数组:dpa[i]表示前i天的最大寒潮次数累计
// dpi数组:dpi[i]表示前i天的最小寒潮次数累计
int a[N];
int b[N];
int dpa[N];
int dpi[N];


int main() {
    // ========== 算法核心思想 ==========
    // 问题目标:计算寒潮次数的最大值和最小值
    // 核心策略:
    // 1. 最大化寒潮次数:通过给未知温度(-999)赋值,让相邻天尽可能满足“降温≥x”
    //    - 未知温度优先设为“前一天温度 - x”(保证降温恰好为x,触发寒潮)
    //    - 若前一天温度-x低于-50,则设为50(保留后续降温空间)
    // 2. 最小化寒潮次数:通过给未知温度赋值,让相邻天尽可能不满足“降温≥x”
    //    - 未知温度优先设为“前一天温度 - x + 1”(保证降温为x-1,不触发寒潮)
    //    - 若前一天温度-x+1低于-50,则设为-50(避免后续不必要的降温)


    int n,x;
    cin>>n>>x;  // 输入天数n、寒潮判定阈值x
    for(int i=1;i<=n;i++){
        cin>>a[i];   // 读取原始温度序列到a数组
        b[i] = a[i]; // 复制原始序列到b数组(a/b分别处理最大/最小情况)
    }


    // ========== 初始化第一天的温度(处理未知情况) ==========
    if(a[1] == -999){  // 若第一天温度未知
        a[1] = 50;     // 最大化寒潮:设为50(后续更容易触发降温≥x)
        b[1] = -50;    // 最小化寒潮:设为-50(后续更难触发降温≥x)
    }
    // 初始化动态规划数组的起始值(第一天无前置天,寒潮次数为0)
    dpa[1] = 0;
    dpi[1] = 0;


    // ========== 遍历第2~n天,分别计算最大/最小寒潮次数 ==========
    for(int i=2;i<=n;i++){
        // ---------------- 处理a数组:计算最大寒潮次数 ----------------
        if(a[i] == -999){  // 当前天温度未知(需赋值以最大化寒潮)
            // 若“前一天温度 - x”≥-50(合法区间下限)
            if(a[i-1] - x >= -50){
                a[i] = a[i-1] - x;  // 设为前一天-x,保证降温恰好为x,触发寒潮
                dpa[i] = dpa[i-1] + 1;  // 寒潮次数+1
            } else {
                // 若前一天-x低于-50,设为50(重新获得后续降温空间)
                a[i] = 50;
                dpa[i] = dpa[i-1];  // 本次未触发寒潮,次数不变
            }
        }
        // 当前天温度已知,判断是否触发寒潮
        else if(a[i] <= a[i-1] - x){
            dpa[i] = dpa[i-1] + 1;  // 满足降温≥x,寒潮次数+1
        }
        else{
            dpa[i] = dpa[i-1];  // 不满足,次数不变
        }


        // ---------------- 处理b数组:计算最小寒潮次数 ----------------
        if(b[i] == -999){  // 当前天温度未知(需赋值以最小化寒潮)
            // 若“前一天温度 - x”≥-50
            if(b[i-1] - x >= -50){
                // 设为前一天-x+1,保证降温为x-1(不足x,不触发寒潮)
                b[i] = b[i-1] - x + 1;
                dpi[i] = dpi[i-1];  // 未触发,次数不变
            } else {
                // 若前一天-x低于-50,设为-50(避免后续降温)
                b[i] = -50;
                dpi[i] = dpi[i-1];  // 未触发,次数不变
            }
        }
        // 当前天温度已知,判断是否触发寒潮(仅无法避免时计数)
        else if(b[i] <= b[i-1] - x){
            dpi[i] = dpi[i-1] + 1;  // 强制满足条件,次数+1
        }
        else{
            dpi[i] = dpi[i-1];  // 不满足,次数不变
        }
    }


    // 输出最大寒潮次数和最小寒潮次数
    cout << dpa[n] << " " << dpi[n];
    return 0;
}