source_code: import java.util.Random;
  import java.util.Arrays;
  import java.util.StringTokenizer;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import java.io.InputStream;
  import java.io.OutputStream;
  import java.io.FileNotFoundException;
  import java.io.IOException;
  import java.io.BufferedReader;
  import java.io.PrintWriter;
  import java.io.InputStreamReader;
  import java.io.File;
  
  public class Task{
  	
  	static final boolean readFromFile = false;
  	static final String fileInputName = "input.txt",
  						fileOutputName = "output.txt";
  	
  	public static void main(String args[]){
  		FileInputStream fileInputStream;
  		FileOutputStream fileOutputStream;
  		InputStream inputStream = System.in;
  		OutputStream outputStream = System.out;
  		if (readFromFile){
  			try{
  				fileInputStream = new FileInputStream(new File(fileInputName));
  				fileOutputStream = new FileOutputStream(new File(fileOutputName));
  			}catch (FileNotFoundException e){
  				throw new RuntimeException(e);
  			}
  		}
  		PrintWriter out = new PrintWriter((readFromFile)?fileOutputStream:outputStream);
  		InputReader in  = new InputReader((readFromFile)?fileInputStream:inputStream);
  		
  		Solver s = new Solver(in, out);
  		s.solve();
  		
  		out.close();
  	}
  }
  
  class Solver{
  	private PrintWriter out;
  	private InputReader in;
  	
  	public void solve(){
  		int n = in.nextInt();
  		double t = in.nextDouble(),
  			a[] = new double[n],
  			x[] = new double[n];
  		for (int i=0;i<n;i++){
  			x[i] = in.nextDouble();
  			a[i] = in.nextDouble();
  		}
  		int ans = 2;
  		for (int i=0;i<n-1;i++)
  			for (int j=i+1;j<n;j++)
  				if (x[j]<x[i]){
  					double buf = x[i];x[i]=x[j];x[j]=buf;
  					buf = a[i]; a[i]=a[j];a[j]=buf;
  				}
  		
  		for (int i=0;i<n-1;i++){
  			if (x[i]+a[i]/2+t<x[i+1]-a[i+1]/2)
  				ans += 2;
  			if (x[i]+a[i]/2+t==x[i+1]-a[i+1]/2)
  				ans++;
  		}
  		out.println(ans);
  	}
  	
  	Solver(InputReader in, PrintWriter out){
  		this.in = in;
  		this.out = out;
  	}
  }
  
  class InputReader{
  	StringTokenizer tok;
  	BufferedReader buf;
  	
  	InputReader(InputStream in){
  		tok = null;
  		buf = new BufferedReader(new InputStreamReader(in));
  	}
  
  	InputReader(FileInputStream in){
  		tok = null;
  		buf = new BufferedReader(new InputStreamReader(in));
  	}
  	
  	public String next(){
  		while (tok==null || !tok.hasMoreTokens()){
  			try{
  				tok = new StringTokenizer(buf.readLine());
  			}catch (IOException e){
  				throw new RuntimeException(e);
  			}
  		}
  		return tok.nextToken();
  	}
  	
  	public int nextInt(){
  		return Integer.parseInt(next());
  	}
  	public long nextLong(){
  		return Long.parseLong(next());
  	}
  	public double nextDouble(){
  		return Double.parseDouble(next());
  	}
  	public float nextFloat(){
  		return Float.parseFloat(next());
  	}
  	public String nextLine(){
  		try{
  			return buf.readLine();
  		}catch (IOException e){
  			return null;
  		}
  	}
  }