<?php
  list($n, $k) = explode(" ", trim(fgets(STDIN)));
  $n=intval($n);
  $k=intval($k);
 
  $st = new SegTree(300010, 0);
  for($i=0;$i<$n;$i++){
    list($a) = explode(" ", trim(fgets(STDIN)));
    $a=intval($a);
    $x = $st->query(max($a-$k,0), min($a+$k,300000)+1) + 1;
    $st->update($a,$x);
  }
  echo $st->query(0,300000);
  
                   
 
class SegTree {
  private $N;
  private $INI;
  private $tree=[];
 
  /**
   * コンストラクタ
   * $n 数列の長さ
   * $ini_value 初期値
   */
  public function __construct($n, $ini_value) {
    $this->N = 1;
    while ($this->N < $n) {
      $this->N *= 2;
    }
    $this->INI = $ini_value;
    $this->tree=array_fill(0, $this->N*2-1, $ini_value);
  }
 
  public function update($i, $value){
    $i = $this->N + $i - 1;
    $this->tree[$i] = $value;
    while ($i > 0) {
      $i = intdiv($i - 1, 2);
      //$this->tree[$i] = $this->marge($this->tree[$i * 2 + 1], $this->tree[$i * 2 + 2]);
      $this->tree[$i] = max($this->tree[$i * 2 + 1], $this->tree[$i * 2 + 2]);
    }
  }
 
  public function query($a, $b){
    return $this->sub_query($a, $b, 0, 0, $this->N);
  }
 
  private function sub_query($a, $b, $k, $l, $r){
    if($r <= $a || $b <= $l){
      return $this->INI;
    }
    if($a <= $l && $r <= $b){
      return $this->tree[$k];
    }else{
      $lv = $this->sub_query($a, $b, 2*$k+1, $l, intdiv($l+$r, 2));
      $rv = $this->sub_query($a, $b, 2*$k+2, intdiv($l+$r, 2), $r);
      //return $this->marge($lv, $rv);
      return max($lv, $rv);
    }
  }
}
 