import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class Main {
	static class Reader
    {
        final private int BUFFER_SIZE = 1 << 16;
        private DataInputStream din;
        private byte[] buffer;
        private int bufferPointer, bytesRead;

        public Reader()
        {
            din = new DataInputStream(System.in);
            buffer = new byte[BUFFER_SIZE];
            bufferPointer = bytesRead = 0;
        }

        public Reader(String file_name) throws IOException
        {
            din = new DataInputStream(new FileInputStream(file_name));
            buffer = new byte[BUFFER_SIZE];
            bufferPointer = bytesRead = 0;
        }

        public String readLine() throws IOException
        {
            byte[] buf = new byte[256]; // line length
            int cnt = 0, c;
            while ((c = read()) != -1)
            {
                if (c == '\n')
                    break;
                buf[cnt++] = (byte) c;
            }
            return new String(buf, 0, cnt);
        }

        public int nextInt() throws IOException
        {
            int ret = 0;
            byte c = read();
            while (c <= ' ')
                c = read();
            boolean neg = (c == '-');
            if (neg)
                c = read();
            do
            {
                ret = ret * 10 + c - '0';
            }  while ((c = read()) >= '0' && c <= '9');

            if (neg)
                return -ret;
            return ret;
        }

        public long nextLong() throws IOException
        {
            long ret = 0;
            byte c = read();
            while (c <= ' ')
                c = read();
            boolean neg = (c == '-');
            if (neg)
                c = read();
            do {
                ret = ret * 10 + c - '0';
            }
            while ((c = read()) >= '0' && c <= '9');
            if (neg)
                return -ret;
            return ret;
        }

        public double nextDouble() throws IOException
        {
            double ret = 0, div = 1;
            byte c = read();
            while (c <= ' ')
                c = read();
            boolean neg = (c == '-');
            if (neg)
                c = read();

            do {
                ret = ret * 10 + c - '0';
            }
            while ((c = read()) >= '0' && c <= '9');

            if (c == '.')
            {
                while ((c = read()) >= '0' && c <= '9')
                {
                    ret += (c - '0') / (div *= 10);
                }
            }

            if (neg)
                return -ret;
            return ret;
        }

        private void fillBuffer() throws IOException
        {
            bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
            if (bytesRead == -1)
                buffer[0] = -1;
        }

        private byte read() throws IOException
        {
            if (bufferPointer == bytesRead)
                fillBuffer();
            return buffer[bufferPointer++];
        }

        public void close() throws IOException
        {
            if (din == null)
                return;
            din.close();
        }
    }

	public static void main(String args[])throws IOException{
		Reader in = new Reader();
		int n = in.nextInt();
		int k = in.nextInt();
		int q = in.nextInt();
		int c[] = new int[(int)(2e5)+2];
		for(int i=0;i<n;i++){
			int l = in.nextInt();
			int r = in.nextInt();
			c[l]++;
			c[r+1]--;
		}
		for(int i=1;i<c.length;i++)
			c[i]+=c[i-1];
		for(int i=0;i<c.length;i++){
			if(c[i]<k)
				c[i]=0;
			else
				c[i]=1;
		}
		for(int i=1;i<c.length;i++)
			c[i]+=c[i-1];
		for(int i=0;i<q;i++){
			int l = in.nextInt();
			int r = in.nextInt();
			System.out.println(c[r]-c[l-1]);
		}
	}
}


	import java.util.*;
	import java.io.*;

	/**
	 *
	 * @author saumya
	 */

	public class karen{

		public static void main(String[] args){
			int mod = (int) (1e9+7);
			InputReader in = new InputReader(System.in);
			PrintWriter out = new PrintWriter(System.out);

			HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();
			long[] arr = new long[200002];
			arr[0] = Integer.MIN_VALUE;
			int n = in.nextInt();
			int k = in.nextInt();
			int q = in.nextInt();
			int min = 0;
			int max = 0;
			for(int i=1;i<200002;i++){
				arr[i] = 0;
			}
			for(int i=0;i<n;i++){
				int l = in.nextInt();
				int r = in.nextInt();
				if(l<min){
					min = l;
				}
				if(r>max){
					max = r;
				}

				arr[l] += 1;
				arr[r+1] -= 1;
			}
			HashSet<Integer> hm1 = new HashSet<Integer>();

			for(int i=2;i<200002;i++){
				arr[i] = arr[i] + arr[i-1];
				if(arr[i]>=k){
					hm1.add(i);
				}
			}

			for(int i=0;i<q;i++){
				int l = in.nextInt();
				int r = in.nextInt();
				int count = 0;
				for(int j=l;j<=r;j++){
					if(hm1.contains(j)){
						count++;
					}
				}

				out.println(count);
			}

			out.close();
		}

	    static class Pair implements Comparable<Pair>{

	        long x,y;
	        int i;

		Pair (long x,long y,int i){
			this.x=x;
			this.y=y;
	                this.i=i;
		}

		public int compareTo(Pair o) {
			if(this.x!=o.x)
	                    return Long.compare(this.x,o.x);
			else
	                    return Long.compare(this.y,o.y);
			//return 0;
		}

	            public boolean equals(Object o) {
	            if (o instanceof Pair) {
	                Pair p = (Pair)o;
	                return p.x == x && p.y == y && p.i==i;
	            }
	            return false;
	        }
	    }

	    public static boolean isPal(String s){
	        for(int i=0, j=s.length()-1;i<=j;i++,j--){
	                if(s.charAt(i)!=s.charAt(j)) return false;
	        }
	        return true;
	    }
	    public static String rev(String s){
			StringBuilder sb=new StringBuilder(s);
			sb.reverse();
			return sb.toString();
	    }

	    public static long gcd(long x,long y){
		if(x%y==0)
			return y;
		else
			return gcd(y,x%y);
	    }

	    public static int gcd(int x,int y){
		if(x%y==0)
			return y;
		else
			return gcd(y,x%y);
	    }

	    public static long gcdExtended(long a,long b,long[] x){

	        if(a==0){
	            x[0]=0;
	            x[1]=1;
	            return b;
	        }
	        long[] y=new long[2];
	        long gcd=gcdExtended(b%a, a, y);

	        x[0]=y[1]-(b/a)*y[0];
	        x[1]=y[0];

	        return gcd;
	    }

	    public static int abs(int a,int b){
		return (int)Math.abs(a-b);
	    }

	    public static long abs(long a,long b){
		return (long)Math.abs(a-b);
	    }

	    public static int max(int a,int b){
		if(a>b)
			return a;
		else
			return b;
	    }

	    public static int min(int a,int b){
		if(a>b)
			return b;
		else
			return a;
	    }

	    public static long max(long a,long b){
		if(a>b)
			return a;
		else
			return b;
	    }

	    public static long min(long a,long b){
		if(a>b)
			return b;
		else
			return a;
	    }

	    public static long pow(long n,long p,long m){
		 long  result = 1;
		  if(p==0)
		    return 1;
		if (p==1)
		    return n;
		while(p!=0)
		{
		    if(p%2==1)
		        result *= n;
		    if(result>=m)
		    result%=m;
		    p >>=1;
		    n*=n;
		    if(n>=m)
		    n%=m;
		}
		return result;
	    }

	    public static long pow(long n,long p){
		long  result = 1;
		  if(p==0)
		    return 1;
		if (p==1)
		    return n;
		while(p!=0)
		{
		    if(p%2==1)
		        result *= n;
		    p >>=1;
		    n*=n;
		}
		return result;
	    }

		static class InputReader {

			private final InputStream stream;
			private final byte[] buf = new byte[8192];
			private int curChar, snumChars;
			private SpaceCharFilter filter;

			public InputReader(InputStream stream) {
				this.stream = stream;
			}

			public int snext() {
				if (snumChars == -1)
					throw new InputMismatchException();
				if (curChar >= snumChars) {
					curChar = 0;
					try {
						snumChars = stream.read(buf);
					} catch (IOException e) {
						throw new InputMismatchException();
					}
					if (snumChars <= 0)
						return -1;
				}
				return buf[curChar++];
			}

			public int nextInt() {
				int c = snext();
				while (isSpaceChar(c)) {
					c = snext();
				}
				int sgn = 1;
				if (c == '-') {
					sgn = -1;
					c = snext();
				}
				int res = 0;
				do {
					if (c < '0' || c > '9')
						throw new InputMismatchException();
					res *= 10;
					res += c - '0';
					c = snext();
				} while (!isSpaceChar(c));
				return res * sgn;
			}

			public long nextLong() {
				int c = snext();
				while (isSpaceChar(c)) {
					c = snext();
				}
				int sgn = 1;
				if (c == '-') {
					sgn = -1;
					c = snext();
				}
				long res = 0;
				do {
					if (c < '0' || c > '9')
						throw new InputMismatchException();
					res *= 10;
					res += c - '0';
					c = snext();
				} while (!isSpaceChar(c));
				return res * sgn;
			}

			public int[] nextIntArray(int n) {
				int a[] = new int[n];
				for (int i = 0; i < n; i++) {
					a[i] = nextInt();
				}
				return a;
			}

			public long[] nextLongArray(int n) {
				long a[] = new long[n];
				for (int i = 0; i < n; i++) {
					a[i] = nextLong();
				}
				return a;
			}

			public String readString() {
				int c = snext();
				while (isSpaceChar(c)) {
					c = snext();
				}
				StringBuilder res = new StringBuilder();
				do {
					res.appendCodePoint(c);
					c = snext();
				} while (!isSpaceChar(c));
				return res.toString();
			}

			public String nextLine() {
				int c = snext();
				while (isSpaceChar(c))
					c = snext();
				StringBuilder res = new StringBuilder();
				do {
					res.appendCodePoint(c);
					c = snext();
				} while (!isEndOfLine(c));
				return res.toString();
			}

			public boolean isSpaceChar(int c) {
				if (filter != null)
					return filter.isSpaceChar(c);
				return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
			}

			private boolean isEndOfLine(int c) {
				return c == '\n' || c == '\r' || c == -1;
			}

			public interface SpaceCharFilter {
				public boolean isSpaceChar(int ch);
			}
		}
	}


import java.util.*;
import java.io.*;

/**
 *
 * @author saumya
 */

public class karen{

	public static void main(String[] args){
		int mod = (int) (1e9+7);
		InputReader in = new InputReader(System.in);
		PrintWriter out = new PrintWriter(System.out);

		HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();

		int n = in.nextInt();
		int k = in.nextInt();
		int q = in.nextInt();

		for(int i=0;i<n;i++){
			int l = in.nextInt();
			int r = in.nextInt();
			for(int j=l;j<=r;j++){
				if(hm.containsKey(j)){
					int c = hm.get(j);
					c++;
					hm.put(j, c);
				}
				else{
					hm.put(j, 1);
				}
			}
		}
		for(int i=0;i<q;i++){
			int l = in.nextInt();
			int r = in.nextInt();
			int count = 0;
			for(int j=l;j<=r;j++){
				if(hm.containsKey(j)){
				if(hm.get(j)>=k)
					count++;
				}
			}
			out.println(count);
		}

		out.close();
	}

    static class Pair implements Comparable<Pair>{

        long x,y;
        int i;

	Pair (long x,long y,int i){
		this.x=x;
		this.y=y;
                this.i=i;
	}

	public int compareTo(Pair o) {
		if(this.x!=o.x)
                    return Long.compare(this.x,o.x);
		else
                    return Long.compare(this.y,o.y);
		//return 0;
	}

            public boolean equals(Object o) {
            if (o instanceof Pair) {
                Pair p = (Pair)o;
                return p.x == x && p.y == y && p.i==i;
            }
            return false;
        }
    }

    public static boolean isPal(String s){
        for(int i=0, j=s.length()-1;i<=j;i++,j--){
                if(s.charAt(i)!=s.charAt(j)) return false;
        }
        return true;
    }
    public static String rev(String s){
		StringBuilder sb=new StringBuilder(s);
		sb.reverse();
		return sb.toString();
    }

    public static long gcd(long x,long y){
	if(x%y==0)
		return y;
	else
		return gcd(y,x%y);
    }

    public static int gcd(int x,int y){
	if(x%y==0)
		return y;
	else
		return gcd(y,x%y);
    }

    public static long gcdExtended(long a,long b,long[] x){

        if(a==0){
            x[0]=0;
            x[1]=1;
            return b;
        }
        long[] y=new long[2];
        long gcd=gcdExtended(b%a, a, y);

        x[0]=y[1]-(b/a)*y[0];
        x[1]=y[0];

        return gcd;
    }

    public static int abs(int a,int b){
	return (int)Math.abs(a-b);
    }

    public static long abs(long a,long b){
	return (long)Math.abs(a-b);
    }

    public static int max(int a,int b){
	if(a>b)
		return a;
	else
		return b;
    }

    public static int min(int a,int b){
	if(a>b)
		return b;
	else
		return a;
    }

    public static long max(long a,long b){
	if(a>b)
		return a;
	else
		return b;
    }

    public static long min(long a,long b){
	if(a>b)
		return b;
	else
		return a;
    }

    public static long pow(long n,long p,long m){
	 long  result = 1;
	  if(p==0)
	    return 1;
	if (p==1)
	    return n;
	while(p!=0)
	{
	    if(p%2==1)
	        result *= n;
	    if(result>=m)
	    result%=m;
	    p >>=1;
	    n*=n;
	    if(n>=m)
	    n%=m;
	}
	return result;
    }

    public static long pow(long n,long p){
	long  result = 1;
	  if(p==0)
	    return 1;
	if (p==1)
	    return n;
	while(p!=0)
	{
	    if(p%2==1)
	        result *= n;
	    p >>=1;
	    n*=n;
	}
	return result;
    }

	static class InputReader {

		private final InputStream stream;
		private final byte[] buf = new byte[8192];
		private int curChar, snumChars;
		private SpaceCharFilter filter;

		public InputReader(InputStream stream) {
			this.stream = stream;
		}

		public int snext() {
			if (snumChars == -1)
				throw new InputMismatchException();
			if (curChar >= snumChars) {
				curChar = 0;
				try {
					snumChars = stream.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (snumChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}

		public int nextInt() {
			int c = snext();
			while (isSpaceChar(c)) {
				c = snext();
			}
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = snext();
			}
			int res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = snext();
			} while (!isSpaceChar(c));
			return res * sgn;
		}

		public long nextLong() {
			int c = snext();
			while (isSpaceChar(c)) {
				c = snext();
			}
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = snext();
			}
			long res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = snext();
			} while (!isSpaceChar(c));
			return res * sgn;
		}

		public int[] nextIntArray(int n) {
			int a[] = new int[n];
			for (int i = 0; i < n; i++) {
				a[i] = nextInt();
			}
			return a;
		}

		public long[] nextLongArray(int n) {
			long a[] = new long[n];
			for (int i = 0; i < n; i++) {
				a[i] = nextLong();
			}
			return a;
		}

		public String readString() {
			int c = snext();
			while (isSpaceChar(c)) {
				c = snext();
			}
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = snext();
			} while (!isSpaceChar(c));
			return res.toString();
		}

		public String nextLine() {
			int c = snext();
			while (isSpaceChar(c))
				c = snext();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = snext();
			} while (!isEndOfLine(c));
			return res.toString();
		}

		public boolean isSpaceChar(int c) {
			if (filter != null)
				return filter.isSpaceChar(c);
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}

		private boolean isEndOfLine(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}

		public interface SpaceCharFilter {
			public boolean isSpaceChar(int ch);
		}
	}
}


	import java.util.*;
	import java.io.*;

	/**
	 *
	 * @author saumya
	 */

	public class karen{

		public static void main(String[] args){
			int mod = (int) (1e9+7);
			InputReader in = new InputReader(System.in);
			PrintWriter out = new PrintWriter(System.out);

			HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();
			long[] arr = new long[200002];
			arr[0] = Integer.MIN_VALUE;
			int n = in.nextInt();
			int k = in.nextInt();
			int q = in.nextInt();
			int min = 0;
			int max = 0;
			for(int i=1;i<200002;i++){
				arr[i] = 0;
			}
			for(int i=0;i<n;i++){
				int l = in.nextInt();
				int r = in.nextInt();
				if(l<min){
					min = l;
				}
				if(r>max){
					max = r;
				}

				arr[l] += 1;
				arr[r+1] -= 1;
			}

			for(int i=2;i<200002;i++){
				arr[i] = arr[i] + arr[i-1];
			}

			long[] arr1 = new long[200002];
			for(int i=1;i<200002;i++){
				arr1[i] = 0;
			}
			int sum = 0;
			for(int i=1;i<200002;i++){
				if(arr[i]>=k){
					sum++;

				}
				arr1[i] = sum;

			}

			for(int i=0;i<q;i++){
				int l = in.nextInt();
				int r = in.nextInt();

				out.println(arr1[r]-arr1[l-1]);
			}

			out.close();
		}

	    static class Pair implements Comparable<Pair>{

	        long x,y;
	        int i;

		Pair (long x,long y,int i){
			this.x=x;
			this.y=y;
	                this.i=i;
		}

		public int compareTo(Pair o) {
			if(this.x!=o.x)
	                    return Long.compare(this.x,o.x);
			else
	                    return Long.compare(this.y,o.y);
			//return 0;
		}

	            public boolean equals(Object o) {
	            if (o instanceof Pair) {
	                Pair p = (Pair)o;
	                return p.x == x && p.y == y && p.i==i;
	            }
	            return false;
	        }
	    }

	    public static boolean isPal(String s){
	        for(int i=0, j=s.length()-1;i<=j;i++,j--){
	                if(s.charAt(i)!=s.charAt(j)) return false;
	        }
	        return true;
	    }
	    public static String rev(String s){
			StringBuilder sb=new StringBuilder(s);
			sb.reverse();
			return sb.toString();
	    }

	    public static long gcd(long x,long y){
		if(x%y==0)
			return y;
		else
			return gcd(y,x%y);
	    }

	    public static int gcd(int x,int y){
		if(x%y==0)
			return y;
		else
			return gcd(y,x%y);
	    }

	    public static long gcdExtended(long a,long b,long[] x){

	        if(a==0){
	            x[0]=0;
	            x[1]=1;
	            return b;
	        }
	        long[] y=new long[2];
	        long gcd=gcdExtended(b%a, a, y);

	        x[0]=y[1]-(b/a)*y[0];
	        x[1]=y[0];

	        return gcd;
	    }

	    public static int abs(int a,int b){
		return (int)Math.abs(a-b);
	    }

	    public static long abs(long a,long b){
		return (long)Math.abs(a-b);
	    }

	    public static int max(int a,int b){
		if(a>b)
			return a;
		else
			return b;
	    }

	    public static int min(int a,int b){
		if(a>b)
			return b;
		else
			return a;
	    }

	    public static long max(long a,long b){
		if(a>b)
			return a;
		else
			return b;
	    }

	    public static long min(long a,long b){
		if(a>b)
			return b;
		else
			return a;
	    }

	    public static long pow(long n,long p,long m){
		 long  result = 1;
		  if(p==0)
		    return 1;
		if (p==1)
		    return n;
		while(p!=0)
		{
		    if(p%2==1)
		        result *= n;
		    if(result>=m)
		    result%=m;
		    p >>=1;
		    n*=n;
		    if(n>=m)
		    n%=m;
		}
		return result;
	    }

	    public static long pow(long n,long p){
		long  result = 1;
		  if(p==0)
		    return 1;
		if (p==1)
		    return n;
		while(p!=0)
		{
		    if(p%2==1)
		        result *= n;
		    p >>=1;
		    n*=n;
		}
		return result;
	    }

		static class InputReader {

			private final InputStream stream;
			private final byte[] buf = new byte[8192];
			private int curChar, snumChars;
			private SpaceCharFilter filter;

			public InputReader(InputStream stream) {
				this.stream = stream;
			}

			public int snext() {
				if (snumChars == -1)
					throw new InputMismatchException();
				if (curChar >= snumChars) {
					curChar = 0;
					try {
						snumChars = stream.read(buf);
					} catch (IOException e) {
						throw new InputMismatchException();
					}
					if (snumChars <= 0)
						return -1;
				}
				return buf[curChar++];
			}

			public int nextInt() {
				int c = snext();
				while (isSpaceChar(c)) {
					c = snext();
				}
				int sgn = 1;
				if (c == '-') {
					sgn = -1;
					c = snext();
				}
				int res = 0;
				do {
					if (c < '0' || c > '9')
						throw new InputMismatchException();
					res *= 10;
					res += c - '0';
					c = snext();
				} while (!isSpaceChar(c));
				return res * sgn;
			}

			public long nextLong() {
				int c = snext();
				while (isSpaceChar(c)) {
					c = snext();
				}
				int sgn = 1;
				if (c == '-') {
					sgn = -1;
					c = snext();
				}
				long res = 0;
				do {
					if (c < '0' || c > '9')
						throw new InputMismatchException();
					res *= 10;
					res += c - '0';
					c = snext();
				} while (!isSpaceChar(c));
				return res * sgn;
			}

			public int[] nextIntArray(int n) {
				int a[] = new int[n];
				for (int i = 0; i < n; i++) {
					a[i] = nextInt();
				}
				return a;
			}

			public long[] nextLongArray(int n) {
				long a[] = new long[n];
				for (int i = 0; i < n; i++) {
					a[i] = nextLong();
				}
				return a;
			}

			public String readString() {
				int c = snext();
				while (isSpaceChar(c)) {
					c = snext();
				}
				StringBuilder res = new StringBuilder();
				do {
					res.appendCodePoint(c);
					c = snext();
				} while (!isSpaceChar(c));
				return res.toString();
			}

			public String nextLine() {
				int c = snext();
				while (isSpaceChar(c))
					c = snext();
				StringBuilder res = new StringBuilder();
				do {
					res.appendCodePoint(c);
					c = snext();
				} while (!isEndOfLine(c));
				return res.toString();
			}

			public boolean isSpaceChar(int c) {
				if (filter != null)
					return filter.isSpaceChar(c);
				return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
			}

			private boolean isEndOfLine(int c) {
				return c == '\n' || c == '\r' || c == -1;
			}

			public interface SpaceCharFilter {
				public boolean isSpaceChar(int ch);
			}
		}
	}


import java.util.*;
import java.io.*;

/**
 *
 * @author saumya
 */

public class karen{

	public static void main(String[] args){
		int mod = (int) (1e9+7);
		InputReader in = new InputReader(System.in);
		PrintWriter out = new PrintWriter(System.out);

		int[] arr = new int[200001];
		arr[0] = -1;
		int n = in.nextInt();
		int k = in.nextInt();
		int q = in.nextInt();
		for(int i=1;i<200001;i++){
			arr[i] = 0;
		}
		for(int i=0;i<n;i++){
			int l = in.nextInt();
			int r = in.nextInt();
			for(int j=l;j<=r;j++){
				arr[j]++;
			}
		}
		for(int i=0;i<q;i++){
			int l = in.nextInt();
			int r = in.nextInt();
			int count = 0;
			for(int j=l;j<=r;j++){
				if(arr[j]>=k)
					count++;
			}
			out.println(count);
		}

		out.close();
	}

    static class Pair implements Comparable<Pair>{

        long x,y;
        int i;

	Pair (long x,long y,int i){
		this.x=x;
		this.y=y;
                this.i=i;
	}

	public int compareTo(Pair o) {
		if(this.x!=o.x)
                    return Long.compare(this.x,o.x);
		else
                    return Long.compare(this.y,o.y);
		//return 0;
	}

            public boolean equals(Object o) {
            if (o instanceof Pair) {
                Pair p = (Pair)o;
                return p.x == x && p.y == y && p.i==i;
            }
            return false;
        }
    }

    public static boolean isPal(String s){
        for(int i=0, j=s.length()-1;i<=j;i++,j--){
                if(s.charAt(i)!=s.charAt(j)) return false;
        }
        return true;
    }
    public static String rev(String s){
		StringBuilder sb=new StringBuilder(s);
		sb.reverse();
		return sb.toString();
    }

    public static long gcd(long x,long y){
	if(x%y==0)
		return y;
	else
		return gcd(y,x%y);
    }

    public static int gcd(int x,int y){
	if(x%y==0)
		return y;
	else
		return gcd(y,x%y);
    }

    public static long gcdExtended(long a,long b,long[] x){

        if(a==0){
            x[0]=0;
            x[1]=1;
            return b;
        }
        long[] y=new long[2];
        long gcd=gcdExtended(b%a, a, y);

        x[0]=y[1]-(b/a)*y[0];
        x[1]=y[0];

        return gcd;
    }

    public static int abs(int a,int b){
	return (int)Math.abs(a-b);
    }

    public static long abs(long a,long b){
	return (long)Math.abs(a-b);
    }

    public static int max(int a,int b){
	if(a>b)
		return a;
	else
		return b;
    }

    public static int min(int a,int b){
	if(a>b)
		return b;
	else
		return a;
    }

    public static long max(long a,long b){
	if(a>b)
		return a;
	else
		return b;
    }

    public static long min(long a,long b){
	if(a>b)
		return b;
	else
		return a;
    }

    public static long pow(long n,long p,long m){
	 long  result = 1;
	  if(p==0)
	    return 1;
	if (p==1)
	    return n;
	while(p!=0)
	{
	    if(p%2==1)
	        result *= n;
	    if(result>=m)
	    result%=m;
	    p >>=1;
	    n*=n;
	    if(n>=m)
	    n%=m;
	}
	return result;
    }

    public static long pow(long n,long p){
	long  result = 1;
	  if(p==0)
	    return 1;
	if (p==1)
	    return n;
	while(p!=0)
	{
	    if(p%2==1)
	        result *= n;
	    p >>=1;
	    n*=n;
	}
	return result;
    }

	static class InputReader {

		private final InputStream stream;
		private final byte[] buf = new byte[8192];
		private int curChar, snumChars;
		private SpaceCharFilter filter;

		public InputReader(InputStream stream) {
			this.stream = stream;
		}

		public int snext() {
			if (snumChars == -1)
				throw new InputMismatchException();
			if (curChar >= snumChars) {
				curChar = 0;
				try {
					snumChars = stream.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (snumChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}

		public int nextInt() {
			int c = snext();
			while (isSpaceChar(c)) {
				c = snext();
			}
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = snext();
			}
			int res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = snext();
			} while (!isSpaceChar(c));
			return res * sgn;
		}

		public long nextLong() {
			int c = snext();
			while (isSpaceChar(c)) {
				c = snext();
			}
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = snext();
			}
			long res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = snext();
			} while (!isSpaceChar(c));
			return res * sgn;
		}

		public int[] nextIntArray(int n) {
			int a[] = new int[n];
			for (int i = 0; i < n; i++) {
				a[i] = nextInt();
			}
			return a;
		}

		public long[] nextLongArray(int n) {
			long a[] = new long[n];
			for (int i = 0; i < n; i++) {
				a[i] = nextLong();
			}
			return a;
		}

		public String readString() {
			int c = snext();
			while (isSpaceChar(c)) {
				c = snext();
			}
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = snext();
			} while (!isSpaceChar(c));
			return res.toString();
		}

		public String nextLine() {
			int c = snext();
			while (isSpaceChar(c))
				c = snext();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = snext();
			} while (!isEndOfLine(c));
			return res.toString();
		}

		public boolean isSpaceChar(int c) {
			if (filter != null)
				return filter.isSpaceChar(c);
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}

		private boolean isEndOfLine(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}

		public interface SpaceCharFilter {
			public boolean isSpaceChar(int ch);
		}
	}
}


import java.util.*;
import java.io.*;

/**
 *
 * @author saumya
 */

public class karen{

	public static void main(String[] args){
		int mod = (int) (1e9+7);
		InputReader in = new InputReader(System.in);
		PrintWriter out = new PrintWriter(System.out);

		HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();

		int n = in.nextInt();
		int k = in.nextInt();
		int q = in.nextInt();
		int min = 0;
		int max = 0;
		for(int i=0;i<n;i++){
			int l = in.nextInt();
			if(l<min){
				min = l;
			}
			if(l>max){
				max = l;
			}
			int r = in.nextInt();
			for(int j=l;j<=r;j++){
				if(hm.containsKey(j)){
					int c = hm.get(j);
					c++;
					hm.put(j, c);
				}
				else{
					hm.put(j, 1);
				}
			}
		}
		HashSet<Integer> hm1 = new HashSet<Integer>();

		for(int i=min;i<=max;i++){
			if(hm.containsKey(i)){
				if(hm.get(i)>=k){
					hm1.add(i);
				}
			}
		}

		for(int i=0;i<q;i++){
			int l = in.nextInt();
			int r = in.nextInt();
			int count = 0;
			for(int j=l;j<=r;j++){
				if(hm1.contains(j)){
					count++;
				}
			}

			out.println(count);
		}

		out.close();
	}

    static class Pair implements Comparable<Pair>{

        long x,y;
        int i;

	Pair (long x,long y,int i){
		this.x=x;
		this.y=y;
                this.i=i;
	}

	public int compareTo(Pair o) {
		if(this.x!=o.x)
                    return Long.compare(this.x,o.x);
		else
                    return Long.compare(this.y,o.y);
		//return 0;
	}

            public boolean equals(Object o) {
            if (o instanceof Pair) {
                Pair p = (Pair)o;
                return p.x == x && p.y == y && p.i==i;
            }
            return false;
        }
    }

    public static boolean isPal(String s){
        for(int i=0, j=s.length()-1;i<=j;i++,j--){
                if(s.charAt(i)!=s.charAt(j)) return false;
        }
        return true;
    }
    public static String rev(String s){
		StringBuilder sb=new StringBuilder(s);
		sb.reverse();
		return sb.toString();
    }

    public static long gcd(long x,long y){
	if(x%y==0)
		return y;
	else
		return gcd(y,x%y);
    }

    public static int gcd(int x,int y){
	if(x%y==0)
		return y;
	else
		return gcd(y,x%y);
    }

    public static long gcdExtended(long a,long b,long[] x){

        if(a==0){
            x[0]=0;
            x[1]=1;
            return b;
        }
        long[] y=new long[2];
        long gcd=gcdExtended(b%a, a, y);

        x[0]=y[1]-(b/a)*y[0];
        x[1]=y[0];

        return gcd;
    }

    public static int abs(int a,int b){
	return (int)Math.abs(a-b);
    }

    public static long abs(long a,long b){
	return (long)Math.abs(a-b);
    }

    public static int max(int a,int b){
	if(a>b)
		return a;
	else
		return b;
    }

    public static int min(int a,int b){
	if(a>b)
		return b;
	else
		return a;
    }

    public static long max(long a,long b){
	if(a>b)
		return a;
	else
		return b;
    }

    public static long min(long a,long b){
	if(a>b)
		return b;
	else
		return a;
    }

    public static long pow(long n,long p,long m){
	 long  result = 1;
	  if(p==0)
	    return 1;
	if (p==1)
	    return n;
	while(p!=0)
	{
	    if(p%2==1)
	        result *= n;
	    if(result>=m)
	    result%=m;
	    p >>=1;
	    n*=n;
	    if(n>=m)
	    n%=m;
	}
	return result;
    }

    public static long pow(long n,long p){
	long  result = 1;
	  if(p==0)
	    return 1;
	if (p==1)
	    return n;
	while(p!=0)
	{
	    if(p%2==1)
	        result *= n;
	    p >>=1;
	    n*=n;
	}
	return result;
    }

	static class InputReader {

		private final InputStream stream;
		private final byte[] buf = new byte[8192];
		private int curChar, snumChars;
		private SpaceCharFilter filter;

		public InputReader(InputStream stream) {
			this.stream = stream;
		}

		public int snext() {
			if (snumChars == -1)
				throw new InputMismatchException();
			if (curChar >= snumChars) {
				curChar = 0;
				try {
					snumChars = stream.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (snumChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}

		public int nextInt() {
			int c = snext();
			while (isSpaceChar(c)) {
				c = snext();
			}
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = snext();
			}
			int res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = snext();
			} while (!isSpaceChar(c));
			return res * sgn;
		}

		public long nextLong() {
			int c = snext();
			while (isSpaceChar(c)) {
				c = snext();
			}
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = snext();
			}
			long res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = snext();
			} while (!isSpaceChar(c));
			return res * sgn;
		}

		public int[] nextIntArray(int n) {
			int a[] = new int[n];
			for (int i = 0; i < n; i++) {
				a[i] = nextInt();
			}
			return a;
		}

		public long[] nextLongArray(int n) {
			long a[] = new long[n];
			for (int i = 0; i < n; i++) {
				a[i] = nextLong();
			}
			return a;
		}

		public String readString() {
			int c = snext();
			while (isSpaceChar(c)) {
				c = snext();
			}
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = snext();
			} while (!isSpaceChar(c));
			return res.toString();
		}

		public String nextLine() {
			int c = snext();
			while (isSpaceChar(c))
				c = snext();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = snext();
			} while (!isEndOfLine(c));
			return res.toString();
		}

		public boolean isSpaceChar(int c) {
			if (filter != null)
				return filter.isSpaceChar(c);
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}

		private boolean isEndOfLine(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}

		public interface SpaceCharFilter {
			public boolean isSpaceChar(int ch);
		}
	}
}


import javax.print.DocFlavor;
import java.io.*;
import java.rmi.MarshalledObject;
import java.util.*;

 public class Main {

     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         int n = sc.nextInt();
         int k = sc.nextInt();
         int q = sc.nextInt();
         int[][] arr = new int[n][2];
         for (int i = 0; i < n; i++) {
             arr[i][0] = sc.nextInt();
             arr[i][1] = sc.nextInt();
         }
         Arrays.sort(arr, (a, b) -> a[0] - b[0]);
         int i = 0;
         int[] a = arr[0];
         int[][] upNdown = new int[200005][2];
         while (i != (n - 1)) {
             int j = i+1;
             while (j<n) {
                 if (arr[j][0] <= arr[i][1]) {
                     upNdown[arr[j][0]][0]++;
                     upNdown[Math.min(arr[i][1], arr[j][1])][1]--;
                     j++;
                 }else
                     break;
             }
                 i++;

         }

         int[] presum = new int[200000];
         for (i = 0; i <= 200000; i++) {
             if (upNdown[i][0] > 0)
                 presum[i] += upNdown[i][0];
             if (upNdown[i][1] < 0)
                 presum[i + 1] += upNdown[i][1];
         }

         for (i = 1; i < 200000; i++)
             presum[i] = presum[i] + presum[i - 1];
         for (i = 1; i < 200000; i++)
             presum[i] = presum[i] + presum[i - 1];

         StringBuilder s = new StringBuilder();
         while (q-- > 0) {
             int x = sc.nextInt();
             int y = sc.nextInt();
             s.append(presum[y] - presum[x - 1] + " ");
         }
         System.out.println(s);
     }
     }


import javax.print.DocFlavor;
import java.io.*;
import java.rmi.MarshalledObject;
import java.util.*;

 public class Main {

     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         int n = sc.nextInt();
         int k = sc.nextInt();
         int q = sc.nextInt();
         int[][] upNdown = new int[200006][2];
         for (int i = 0; i < n; i++) {
             upNdown[sc.nextInt()][0]++;
             upNdown[sc.nextInt()][1]--;
         }

         int i = 0;
         int[] arr = new int[200006];
         int[] presum = new int[200006];
         arr[0] = upNdown[0][0];
         for (i = 1; i <= 200000; i++) {
             arr[i] += arr[i - 1] + upNdown[i][0];
             arr[i + 1] += upNdown[i][1];
         }

       for(i =0 ; i<=200000;i++) {
           if (arr[i] >= k) {
               arr[i] = 1;
           }else
               arr[i] = 0;
       }
           presum[0] = arr[0];
         for(i =1 ; i<=200000;i++)
             presum[i] = arr[i] + presum[i-1];

             StringBuilder s = new StringBuilder();
             while (q-- > 0) {
                 int x = sc.nextInt();
                 int y = sc.nextInt();
                 if(x==0)
                     s.append(presum[y]);
                 else
                     s.append(presum[y] - presum[x - 1] + " ");
             }
             System.out.println(s);
         }
     }


import javax.print.DocFlavor;
import java.io.*;
import java.rmi.MarshalledObject;
import java.util.*;

 public class Main {

     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         int n = sc.nextInt();
         int k = sc.nextInt();
         int q = sc.nextInt();
         int[][] arr = new int[n][2];
         for (int i = 0; i < n; i++) {
             arr[i][0] = sc.nextInt();
             arr[i][1] = sc.nextInt();
         }
         Arrays.sort(arr, (a, b) -> a[0] - b[0]);
         int i = 0;
         int[] a = arr[0];
         int[][] upNdown = new int[200005][2];
         while (i != (n - 1)) {
             int j = i + 1;
             while (j < n) {
                 if (arr[j][0] <= arr[i][1]) {
                     upNdown[arr[j][0]][0]++;
                     upNdown[Math.min(arr[i][1], arr[j][1])][1]--;
                     j++;
                 } else
                     break;
             }
             i++;

         }

         int[] presum = new int[200005];
         presum[0] = upNdown[0][0];
         for (i = 1; i < 200000; i++) {
             presum[i] += presum[i - 1] + upNdown[i][0];
             presum[i + 1] += upNdown[i][1];
         }

         for (i = 1; i < 200000; i++) {
             presum[i] += presum[i - 1];
         }
             StringBuilder s = new StringBuilder();
             while (q-- > 0) {
                 int x = sc.nextInt();
                 int y = sc.nextInt();
                 s.append(presum[y] - presum[x - 1] + " ");
             }
             System.out.println(s);
         }
     }


import javax.print.DocFlavor;
import java.io.*;
import java.rmi.MarshalledObject;
import java.util.*;

 public class Main {

     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         int n = sc.nextInt();
         int k = sc.nextInt();
         int q = sc.nextInt();
         int[][] upNdown = new int[200006][2];
         for (int i = 0; i < n; i++) {
             upNdown[sc.nextInt()][0]++;
             upNdown[sc.nextInt()][1]--;
         }

         int i = 0;
         int[] arr = new int[200006];
         int[] presum = new int[200006];
         arr[0] = upNdown[0][0];
         for (i = 1; i <= 200005; i++) {
             arr[i] += arr[i - 1] + upNdown[i][0];
             arr[i + 1] += upNdown[i][1];
         }

       for(i =0 ; i<=200005;i++) {
           if (arr[i] >= k) {
               arr[i] = 1;
           }else
               arr[i] = 0;
       }
           presum[0] = arr[0];
         for(i =1 ; i<=200005;i++)
             presum[i] = arr[i] + presum[i-1];

             StringBuilder s = new StringBuilder();
             while (q-- > 0) {
                 int x = sc.nextInt();
                 int y = sc.nextInt();
                 if(x==0)
                     s.append(presum[y]);
                 else
                     s.append(presum[y] - presum[x - 1] + " ");
             }
             System.out.println(s);
         }
     }


import javax.print.DocFlavor;
import java.io.*;
import java.rmi.MarshalledObject;
import java.util.*;

 public class Main {

     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         int n = sc.nextInt();
         int k = sc.nextInt();
         int q = sc.nextInt();
         int[][] arr = new int[n][2];
         for (int i = 0; i < n; i++) {
             arr[i][0] = sc.nextInt();
             arr[i][1] = sc.nextInt();
         }
         Arrays.sort(arr, (a, b) -> a[0] - b[0]);
         int i = 0;
         int[] a = arr[0];
         int[][] upNdown = new int[200005][2];
         while (i != (n - 1)) {
             int j = i + 1;
             while (j < n) {
                 if (arr[j][0] <= arr[i][1]) {
                     upNdown[arr[j][0]][0]++;
                     upNdown[Math.min(arr[i][1], arr[j][1])][1]--;
                     j++;
                 } else
                     break;
             }
             i++;

         }

         int[] presum = new int[200005];
         presum[0] = upNdown[0][0];
         for (i = 1; i < 200000; i++) {
             presum[i] += presum[i - 1] + upNdown[i][0];
             presum[i + 1] += upNdown[i][1];
         }

         for (i = 1; i < 200000; i++) {
             if(presum[i] > 0)
                 presum[i] = 1;
             presum[i] += presum[i-1];
         }
             StringBuilder s = new StringBuilder();
             while (q-- > 0) {
                 int x = sc.nextInt();
                 int y = sc.nextInt();
                 s.append(presum[y] - presum[x - 1] + " ");
             }
             System.out.println(s);
         }
     }


import javax.print.DocFlavor;
import java.io.*;
import java.rmi.MarshalledObject;
import java.util.*;

 public class Main {

     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         int n = sc.nextInt();
         int k = sc.nextInt();
         int q = sc.nextInt();
         int[][] arr = new int[n][2];
         for (int i = 0; i < n; i++) {
             arr[i][0] = sc.nextInt();
             arr[i][1] = sc.nextInt();
         }
         Arrays.sort(arr, (a, b) -> a[0] - b[0]);
         int i = 0;
         int[] a = arr[0];
         int[][] upNdown = new int[200005][2];
         while (i != (n - 1)) {
             int j = i + 1;
             while (j < n) {
                 if (arr[j][0] <= arr[i][1]) {
                     upNdown[arr[j][0]][0]++;
                     upNdown[Math.min(arr[i][1], arr[j][1])][1]--;
                     j++;
                 } else
                     break;
             }
             i++;

         }

         int[] presum = new int[200005];
         presum[0] = upNdown[0][0];
         for (i = 1; i < 200000; i++) {
             presum[i] += presum[i - 1] + upNdown[i][0];
             presum[i + 1] += upNdown[i][1];
         }

         if(presum[0] > 1)
             presum[0] = 1;

         for (i = 1; i < 200000; i++) {
             if(presum[i] > 0)
                 presum[i] = 1;
             presum[i] += presum[i-1];
         }
             StringBuilder s = new StringBuilder();
             while (q-- > 0) {
                 int x = sc.nextInt();
                 int y = sc.nextInt();
                 s.append(presum[y] - presum[x - 1] + " ");
             }
             System.out.println(s);
         }
     }


import javax.print.DocFlavor;
import java.io.*;
import java.rmi.MarshalledObject;
import java.util.*;

 public class Main {

     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         int n = sc.nextInt();
         int k = sc.nextInt();
         int q = sc.nextInt();
         int[][] upNdown = new int[200005][2];
         for (int i = 0; i < n; i++) {
             upNdown[sc.nextInt()][0]++;
             upNdown[sc.nextInt()][1]--;
         }

         int i = 0;
         int[] arr = new int[200005];
         int[] presum = new int[200005];
         arr[0] = upNdown[0][0];
         for (i = 1; i < 200000; i++) {
             arr[i] += arr[i - 1] + upNdown[i][0];
             arr[i + 1] += upNdown[i][1];
         }

       for(i =0 ; i<200000;i++) {
           if (arr[i] >= k) {
               arr[i] = 1;
           }else
               arr[i] = 0;
       }
           presum[0] = arr[0];
         for(i =1 ; i<200000;i++)
             presum[i] = arr[i] + presum[i-1];

             StringBuilder s = new StringBuilder();
             while (q-- > 0) {
                 int x = sc.nextInt();
                 int y = sc.nextInt();
                 s.append(presum[y] - presum[x - 1] + " ");
             }
             System.out.println(s);
         }
     }


import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author kanak893
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskB solver = new TaskB();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskB {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int n, k, q, i, j, a, b;
            n = in.nextInt();
            k = in.nextInt();
            q = in.nextInt();
            int max = 2005;
            Fenwick f = new Fenwick(max);
            for (i = 1; i <= n; i++) {
                a = in.nextInt();
                b = in.nextInt();
                f.update(a, 1);
                f.update(b + 1, -1);
            }
            Fenwick qr = new Fenwick(max);
            for (i = 1; i < max; i++) {
                int sum = f.query(1, i);
                if (sum >= k) qr.update(i, 1);
            }
            for (i = 1; i <= q; i++) {
                a = in.nextInt();
                b = in.nextInt();
                out.println(qr.query(a, b));
            }
        }

    }

    static class Fenwick {
        int[] fen;
        int n;

        Fenwick(int n) {
            fen = new int[n];
            this.n = n;
        }

        void update(int i, int val) {
            for (int x = i; x < n; x += Integer.lowestOneBit(x)) {
                fen[x] += val;
            }
        }

        int query(int a, int b) {
            return getSum(b) - getSum(a - 1);
        }

        int getSum(int i) {
            int ans = 0;
            for (int x = i; x > 0; x = x - Integer.lowestOneBit(x)) {
                ans += fen[x];
            }
            return ans;
        }

    }

    static class InputReader {
        private InputStream stream;
        private byte[] buf = new byte[8192];
        private int curChar;
        private int snumChars;
        private InputReader.SpaceCharFilter filter;

        public InputReader(InputStream stream) {
            this.stream = stream;
        }

        public int snext() {
            if (snumChars == -1)
                throw new InputMismatchException();
            if (curChar >= snumChars) {
                curChar = 0;
                try {
                    snumChars = stream.read(buf);
                } catch (IOException e) {
                    throw new InputMismatchException();
                }
                if (snumChars <= 0)
                    return -1;
            }
            return buf[curChar++];
        }

        public int nextInt() {
            int c = snext();
            while (isSpaceChar(c))
                c = snext();
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = snext();
            }
            int res = 0;
            do {
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = snext();
            } while (!isSpaceChar(c));
            return res * sgn;
        }

        public boolean isSpaceChar(int c) {
            if (filter != null)
                return filter.isSpaceChar(c);
            return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
        }

        public interface SpaceCharFilter {
            public boolean isSpaceChar(int ch);

        }

    }
}


import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author kanak893
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskB solver = new TaskB();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskB {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int n, k, q, i, j, a, b;
            n = in.nextInt();
            k = in.nextInt();
            q = in.nextInt();
            int max = 200005;
            Fenwick f = new Fenwick(max);
            for (i = 1; i <= n; i++) {
                a = in.nextInt();
                b = in.nextInt();
                f.update(a, 1);
                f.update(b + 1, -1);
            }
            Fenwick qr = new Fenwick(max);
            for (i = 1; i < max; i++) {
                int sum = f.query(1, i);
                if (sum >= k) qr.update(i, 1);
            }
            for (i = 1; i <= q; i++) {
                a = in.nextInt();
                b = in.nextInt();
                out.println(qr.query(a, b));
            }
        }

    }

    static class Fenwick {
        int[] fen;
        int n;

        Fenwick(int n) {
            fen = new int[n];
            this.n = n;
        }

        void update(int i, int val) {
            for (int x = i; x < n; x += Integer.lowestOneBit(x)) {
                fen[x] += val;
            }
        }

        int query(int a, int b) {
            return getSum(b) - getSum(a - 1);
        }

        int getSum(int i) {
            int ans = 0;
            for (int x = i; x > 0; x = x - Integer.lowestOneBit(x)) {
                ans += fen[x];
            }
            return ans;
        }

    }

    static class InputReader {
        private InputStream stream;
        private byte[] buf = new byte[8192];
        private int curChar;
        private int snumChars;
        private InputReader.SpaceCharFilter filter;

        public InputReader(InputStream stream) {
            this.stream = stream;
        }

        public int snext() {
            if (snumChars == -1)
                throw new InputMismatchException();
            if (curChar >= snumChars) {
                curChar = 0;
                try {
                    snumChars = stream.read(buf);
                } catch (IOException e) {
                    throw new InputMismatchException();
                }
                if (snumChars <= 0)
                    return -1;
            }
            return buf[curChar++];
        }

        public int nextInt() {
            int c = snext();
            while (isSpaceChar(c))
                c = snext();
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = snext();
            }
            int res = 0;
            do {
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = snext();
            } while (!isSpaceChar(c));
            return res * sgn;
        }

        public boolean isSpaceChar(int c) {
            if (filter != null)
                return filter.isSpaceChar(c);
            return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
        }

        public interface SpaceCharFilter {
            public boolean isSpaceChar(int ch);

        }

    }
}


import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

/**
 * Created by yash on 04/06/17.
 */
public class A {
    public static void main(String[] args) throws IOException {
        Reader reader = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(reader);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Solver solver = new Solver();
        solver.solve(br, bw);
        br.close();
        bw.close();
    }

    static class Solver {

        Utils utils;

        Solver() {
            utils = new Utils();
        }

        void solve(BufferedReader br, BufferedWriter bw) throws IOException {
            int[] args = new int[2];
            utils.getIntArray(br.readLine(), args, ":");
            int h = args[0];
            int m = args[1];

            int ans = 0;
            int revh = rev(h);

            if (m <= revh) {
                ans = revh - m;
            } else {
                int nh = (h + 1) % 24;
                int nm = rev(nh);
                ans = nm + (60 - m);
            }
            bw.write(ans + "\n");

        }

        int rev(int n) {
            int ans = 0;
            if (n <= 10)
                return n*10;

            while (n > 0) {
                ans = ans*10;
                ans += n % 10;
                n /= 10;
            }
            return ans;
        }

    }

    static class Utils {

        void getLongArray(String s, long a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getLong(temp[i]);
            }
        }

        void getIntArray(String s, int a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        void getIntArray(String s, int a[], String regex) {
            String[] temp = s.split(regex);
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        int getInt(String s) {
            return Integer.parseInt(s);
        }

        long getLong(String s) {
            return Long.parseLong(s);
        }

        void printArray(int[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(long[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(float[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(double[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void print2DArray(int[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

        void print2DArray(Object[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

    }
}


import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

/**
 * Created by yash on 04/06/17.
 */
public class B {
    public static void main(String[] args) throws IOException {
        Reader reader = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(reader);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Solver solver = new Solver();
        solver.solve(br, bw);
        br.close();
        bw.close();
    }

    static class Solver {

        Utils utils;

        Solver() {
            utils = new Utils();
        }

        void solve(BufferedReader br, BufferedWriter bw) throws IOException {
            int[] args = new int[3];
            int n, k, q;
            utils.getIntArray(br.readLine(), args);
            n = args[0];
            k = args[1];
            q = args[2];

            int[] r = new int[200001];
            int[] range = new int[2];
            for (int i = 0; i < n; i++) {
                utils.getIntArray(br.readLine(), range);
                for (int j = range[0]; j <= range[1]; j++) {
                    r[j]++;
                }
            }
            int[] query = new int[2];
            for (int i = 0; i < q; i++) {
                long ct = 0;
                utils.getIntArray(br.readLine(), query);
                for (int j = query[0]; j <= query[1]; j++) {
                    if (r[j] >= k)
                        ct++;
                }
                bw.write(ct+"\n");
            }

        }

    }

    static class Utils {

        void getLongArray(String s, long a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getLong(temp[i]);
            }
        }

        void getIntArray(String s, int a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        void getIntArray(String s, int a[], String regex) {
            String[] temp = s.split(regex);
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        int getInt(String s) {
            return Integer.parseInt(s);
        }

        long getLong(String s) {
            return Long.parseLong(s);
        }

        void printArray(int[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(long[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(float[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(double[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void print2DArray(int[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

        void print2DArray(Object[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

    }
}


import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

/**
 * Created by yash on 04/06/17.
 */
public class B {
    public static void main(String[] args) throws IOException {
        Reader reader = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(reader);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Solver solver = new Solver();
        solver.solve(br, bw);
        br.close();
        bw.close();
    }

    static class Solver {

        Utils utils;

        Solver() {
            utils = new Utils();
        }

        void solve(BufferedReader br, BufferedWriter bw) throws IOException {
            int[] args = new int[3];
            int n, k, q;
            utils.getIntArray(br.readLine(), args);
            n = args[0];
            k = args[1];
            q = args[2];
            int size = 200005;

            int[] r = new int[size];
            int[] range = new int[2];
            int min = Integer.MAX_VALUE;
            int max = Integer.MIN_VALUE;

            for (int i = 0; i < n; i++) {
                utils.getIntArray(br.readLine(), range);
                for (int j = range[0]; j <= range[1]; j++) {
                    r[j]++;
                    min = Math.min(min, range[0]);
                    max = Math.max(max, range[1]);
                }
            }

            long[] rcum = new long[size];
            rcum[size - 1] = (r[size - 1] >= k ? 1 : 0);
            for (int i = max; i >= min; i--) {
                rcum[i] = rcum[i + 1] + (r[i] >= k ? 1 : 0);
            }

            int[] query = new int[2];
            for (int i = 0; i < q; i++) {
                utils.getIntArray(br.readLine(), query);

                long ct;
                if (query[0] > max) {
                    ct = 0;
                } else if (query[1] < min) {
                    ct = 0;
                } else {
                    ct = (query[0] <= min ? rcum[min] : rcum[query[0]]) - (query[1] >= max ? rcum[max + 1] : rcum[query[1] + 1]);
                }
                bw.write(ct + "\n");
            }

        }

    }

    static class Utils {

        void getLongArray(String s, long a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getLong(temp[i]);
            }
        }

        void getIntArray(String s, int a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        void getIntArray(String s, int a[], String regex) {
            String[] temp = s.split(regex);
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        int getInt(String s) {
            return Integer.parseInt(s);
        }

        long getLong(String s) {
            return Long.parseLong(s);
        }

        void printArray(int[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(long[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(float[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(double[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void print2DArray(int[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

        void print2DArray(Object[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

    }
}


import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

/**
 * Created by yash on 04/06/17.
 */
public class B {
    public static void main(String[] args) throws IOException {
        Reader reader = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(reader);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Solver solver = new Solver();
        solver.solve(br, bw);
        br.close();
        bw.close();
    }

    static class Solver {

        Utils utils;

        Solver() {
            utils = new Utils();
        }

        void solve(BufferedReader br, BufferedWriter bw) throws IOException {
            int[] args = new int[3];
            int n, k, q;
            utils.getIntArray(br.readLine(), args);
            n = args[0];
            k = args[1];
            q = args[2];
            int size = 200005;

            int[] r = new int[size];
            int[] range = new int[2];
            for (int i = 0; i < n; i++) {
                utils.getIntArray(br.readLine(), range);
                for (int j = range[0]; j <= range[1]; j++) {
                    r[j]++;
                }
            }
            long[] rcum = new long[size];
            rcum[size - 1] = (r[size - 1] >= k ? 1 : 0);
            for (int i = size - 2; i >= 0; i--) {
                rcum[i] = rcum[i + 1] + (r[i] >= k ? 1 : 0);
            }

            int[] query = new int[2];
            for (int i = 0; i < q; i++) {
                utils.getIntArray(br.readLine(), query);
                long ct = rcum[query[0]] - rcum[query[1] + 1];
                bw.write(ct + "\n");
            }

        }

    }

    static class Utils {

        void getLongArray(String s, long a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getLong(temp[i]);
            }
        }

        void getIntArray(String s, int a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        void getIntArray(String s, int a[], String regex) {
            String[] temp = s.split(regex);
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        int getInt(String s) {
            return Integer.parseInt(s);
        }

        long getLong(String s) {
            return Long.parseLong(s);
        }

        void printArray(int[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(long[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(float[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(double[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void print2DArray(int[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

        void print2DArray(Object[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

    }
}


import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

/**
 * Created by yash on 04/06/17.
 */
public class B {
    public static void main(String[] args) throws IOException {
        Reader reader = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(reader);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Solver solver = new Solver();
        solver.solve(br, bw);
        br.close();
        bw.close();
    }

    static class Solver {

        Utils utils;

        Solver() {
            utils = new Utils();
        }

        void solve(BufferedReader br, BufferedWriter bw) throws IOException {
            int[] args = new int[3];
            int n, k, q;
            utils.getIntArray(br.readLine(), args);
            n = args[0];
            k = args[1];
            q = args[2];
            int size = 200003;

            int[] r = new int[size];
            int[] range = new int[2];
            int min = size;
            int max = 0;

            for (int i = 0; i < n; i++) {
                utils.getIntArray(br.readLine(), range);
                for (int j = range[0]; j <= range[1]; j++) {
                    r[j]++;
                    if (r[j] >= k) {
                        min = Math.min(min, j);
                        max = Math.max(max, j);
                    }
                }
            }

            int[] rcum = new int[size];
            rcum[size - 1] = (r[size - 1] >= k ? 1 : 0);
            for (int i = max; i >= min; i--) {
                rcum[i] = rcum[i + 1] + (r[i] >= k ? 1 : 0);
            }

            int[] query = new int[2];
            for (int i = 0; i < q; i++) {
                utils.getIntArray(br.readLine(), query);

                int ct;
                if (query[0] > max || query[1] < min) {
                    ct = 0;
                } else {
                    ct = (query[0] <= min ? rcum[min] : rcum[query[0]]) - (query[1] >= max ? rcum[max + 1] : rcum[query[1] + 1]);
                }
                bw.write(ct + "\n");
            }

        }

    }

    static class Utils {

        void getLongArray(String s, long a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getLong(temp[i]);
            }
        }

        void getIntArray(String s, int a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        void getIntArray(String s, int a[], String regex) {
            String[] temp = s.split(regex);
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        int getInt(String s) {
            return Integer.parseInt(s);
        }

        long getLong(String s) {
            return Long.parseLong(s);
        }

        void printArray(int[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(long[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(float[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(double[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void print2DArray(int[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

        void print2DArray(Object[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

    }
}


import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

/**
 * Created by yash on 04/06/17.
 */
public class B {
    public static void main(String[] args) throws IOException {
        Reader reader = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(reader);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Solver solver = new Solver();
        solver.solve(br, bw);
        br.close();
        bw.close();
    }

    static class Solver {

        Utils utils;

        Solver() {
            utils = new Utils();
        }

        void solve(BufferedReader br, BufferedWriter bw) throws IOException {
            int[] args = new int[3];
            int n, k, q;
            utils.getIntArray(br.readLine(), args);
            n = args[0];
            k = args[1];
            q = args[2];
            int size = 200005;

            int[] r = new int[size];
            int[] range = new int[2];

            for (int i = 0; i < n; i++) {
                utils.getIntArray(br.readLine(), range);
                r[range[0]]++;
                r[range[1] + 1]--;
            }

            int cnt = 0;
            int[] rcum = new int[size];
            for (int i = 1; i <= size - 1; i++) {
                cnt += r[i];
                if (cnt >= k)
                    rcum[i] = 1;
            }

            for (int i = 1; i <= size - 1; i++) {
                rcum[i] += rcum[i - 1];
            }

            int[] query = new int[2];
            for (int i = 0; i < q; i++) {
                utils.getIntArray(br.readLine(), query);
                int ct = rcum[query[1]] - rcum[query[0] - 1];
                bw.write(ct + "\n");
            }

        }

    }

    static class Utils {

        void getLongArray(String s, long a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getLong(temp[i]);
            }
        }

        void getIntArray(String s, int a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        void getIntArray(String s, int a[], String regex) {
            String[] temp = s.split(regex);
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        int getInt(String s) {
            return Integer.parseInt(s);
        }

        long getLong(String s) {
            return Long.parseLong(s);
        }

        void printArray(int[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(long[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(float[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(double[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void print2DArray(int[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

        void print2DArray(Object[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

    }
}


import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

/**
 * Created by yash on 04/06/17.
 */
public class B {
    public static void main(String[] args) throws IOException {
        Reader reader = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(reader);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Solver solver = new Solver();
        solver.solve(br, bw);
        br.close();
        bw.close();
    }

    static class Solver {

        Utils utils;

        Solver() {
            utils = new Utils();
        }

        void solve(BufferedReader br, BufferedWriter bw) throws IOException {
            int[] args = new int[3];
            int n, k, q;
            utils.getIntArray(br.readLine(), args);
            n = args[0];
            k = args[1];
            q = args[2];
            int size = 200003;

            int[] r = new int[size];
            int[] range = new int[2];
            int min = size;
            int max = 0;

            for (int i = 0; i < n; i++) {
                utils.getIntArray(br.readLine(), range);
                for (int j = range[0]; j <= range[1]; j++) {
                    r[j]++;
                    if (r[j] >= k) {
                        min = Math.min(min, range[0]);
                        max = Math.max(max, range[1]);
                    }
                }
            }

            int[] rcum = new int[size];
            rcum[size - 1] = (r[size - 1] >= k ? 1 : 0);
            for (int i = max; i >= min; i--) {
                rcum[i] = rcum[i + 1] + (r[i] >= k ? 1 : 0);
            }

            int[] query = new int[2];
            for (int i = 0; i < q; i++) {
                utils.getIntArray(br.readLine(), query);

                int ct;
                if (query[0] > max || query[1] < min) {
                    ct = 0;
                } else {
                    ct = (query[0] <= min ? rcum[min] : rcum[query[0]]) - (query[1] >= max ? rcum[max + 1] : rcum[query[1] + 1]);
                }
                bw.write(ct + "\n");
            }

        }

    }

    static class Utils {

        void getLongArray(String s, long a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getLong(temp[i]);
            }
        }

        void getIntArray(String s, int a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        void getIntArray(String s, int a[], String regex) {
            String[] temp = s.split(regex);
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        int getInt(String s) {
            return Integer.parseInt(s);
        }

        long getLong(String s) {
            return Long.parseLong(s);
        }

        void printArray(int[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(long[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(float[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(double[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void print2DArray(int[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

        void print2DArray(Object[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

    }
}


import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

/**
 * Created by yash on 04/06/17.
 */
public class B {
    public static void main(String[] args) throws IOException {
        Reader reader = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(reader);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Solver solver = new Solver();
        solver.solve(br, bw);
        br.close();
        bw.close();
    }

    static class Solver {

        Utils utils;

        Solver() {
            utils = new Utils();
        }

        void solve(BufferedReader br, BufferedWriter bw) throws IOException {
            int[] args = new int[3];
            int n, k, q;
            utils.getIntArray(br.readLine(), args);
            n = args[0];
            k = args[1];
            q = args[2];
            int size = 200005;

            int[] r = new int[size];
            int[] range = new int[2];
            int min = size;
            int max = 0;

            for (int i = 0; i < n; i++) {
                utils.getIntArray(br.readLine(), range);
                for (int j = range[0]; j <= range[1]; j++) {
                    r[j]++;
                }
                min = Math.min(min, range[0]);
                max = Math.max(max, range[1]);
            }

            long[] rcum = new long[size];
            rcum[size - 1] = (r[size - 1] >= k ? 1 : 0);
            for (int i = max; i >= min; i--) {
                rcum[i] = rcum[i + 1] + (r[i] >= k ? 1 : 0);
            }

            int[] query = new int[2];
            for (int i = 0; i < q; i++) {
                utils.getIntArray(br.readLine(), query);

                long ct;
                if (query[0] > max || query[1] < min) {
                    ct = 0;
                } else {
                    ct = (query[0] <= min ? rcum[min] : rcum[query[0]]) - (query[1] >= max ? rcum[max + 1] : rcum[query[1] + 1]);
                }
                bw.write(ct + "\n");
            }

        }

    }

    static class Utils {

        void getLongArray(String s, long a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getLong(temp[i]);
            }
        }

        void getIntArray(String s, int a[]) {
            String[] temp = s.split(" ");
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        void getIntArray(String s, int a[], String regex) {
            String[] temp = s.split(regex);
            for (int i = 0; i < temp.length; i++) {
                a[i] = getInt(temp[i]);
            }
        }

        int getInt(String s) {
            return Integer.parseInt(s);
        }

        long getLong(String s) {
            return Long.parseLong(s);
        }

        void printArray(int[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(long[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(float[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void printArray(double[] a) {
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
            System.out.println();
        }

        void print2DArray(int[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

        void print2DArray(Object[][] a) {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[0].length; j++) {
                    System.out.print(a[i][j] + " ");
                }
                System.out.println();
            }
            System.out.println();
        }

    }
}


import java.util.*;
import java.io.*;

public final class Main {

    public static void main(String[] args) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        int q = Integer.parseInt(st.nextToken());

        //need prefix and suffix arrays
        int[] prefix = new int[200002];

        for(int i = 0; i<n; i++){
            st = new StringTokenizer(br.readLine());
            int l = Integer.parseInt(st.nextToken());
            int r = Integer.parseInt(st.nextToken());
            prefix[l]++;
            prefix[r+1]--;
        }

        for(int i = 1; i<prefix.length; i++){
            prefix[i] += prefix[i-1];
        }

        int[] prefix2 = new int[prefix.length];

        for(int i = 0; i<prefix.length; i++){
            if(prefix[i] == k){
                prefix2[i]++;
            }
        }

        for(int i = 1; i<prefix2.length; i++){
            prefix2[i] += prefix2[i-1];
        }

        PrintWriter pw = new PrintWriter(System.out);

        for(int i = 0; i<q; i++){
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            pw.println(prefix2[b] - prefix2[a-1]);
        }

        pw.close();
    }

}


import java.util.*;
import java.io.*;

public final class Main {

    public static void main(String[] args) throws Exception {
        PrintWriter pw = new PrintWriter(System.out);
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        int q = Integer.parseInt(st.nextToken());

        //need prefix and suffix arrays
        int[] prefix = new int[200002];

        for(int i = 0; i<n; i++){
            st = new StringTokenizer(br.readLine());
            int l = Integer.parseInt(st.nextToken());
            int r = Integer.parseInt(st.nextToken());
            prefix[l]++;
            prefix[r+1]--;
        }

        for(int i = 1; i<prefix.length; i++){
            prefix[i] += prefix[i-1];
        }

        int[] prefix2 = new int[prefix.length];

        for(int i = 0; i<prefix.length; i++){
            if(prefix[i] >= k){
                prefix2[i]++;
            }
        }

        for(int i = 1; i<prefix2.length; i++){
            prefix2[i] += prefix2[i-1];
        }

        for(int i = 0; i<q; i++){
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            pw.println(prefix2[b] - prefix2[a-1]);
        }
        pw.close();
    }

}


import java.util.*;
import java.io.*;

public final class Main {

    public static void main(String[] args) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        int q = Integer.parseInt(st.nextToken());

        //need prefix and suffix arrays
        int[] prefix = new int[200002];

        for(int i = 0; i<n; i++){
            st = new StringTokenizer(br.readLine());
            int l = Integer.parseInt(st.nextToken());
            int r = Integer.parseInt(st.nextToken());
            prefix[l]++;
            prefix[r+1]--;
        }

        for(int i = 1; i<prefix.length; i++){
            prefix[i] += prefix[i-1];
        }

        int[] prefix2 = new int[prefix.length];

        for(int i = 0; i<prefix.length; i++){
            if(prefix[i] == k){
                prefix2[i]++;
            }
        }

        for(int i = 1; i<prefix2.length; i++){
            prefix2[i] += prefix2[i-1];
        }

        for(int i = 0; i<q; i++){
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            System.out.println(prefix2[b] - prefix2[a-1]);
        }

    }

}


import java.util.Scanner;

public class Main {

    public static void main(String []args){
        Scanner sc = new Scanner(System.in);

        final int N = 200000 + 7;
        int n = sc.nextInt();
        int k = sc.nextInt();
        int q = sc.nextInt();
        long []dist = new long[N];
        int a,b;

        for(int i = 0 ; i < n ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            dist[a] ++;
            dist[b + 1]--;
        }

        for(int i = 1 ; i < dist.length ; i++){
            dist[i] += dist[i-1];
        }

        for(int i = 1 ; i < dist.length ; i++){
            dist[i] = (dist[i] >= k) ? 1 :0;
        }

        for(int i = 1 ; i < dist.length ;i++){
            dist[i] += dist[i - 1];
        }

        for(int i = 0 ; i < q ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            System.out.println(dist[b] - dist[a - 1]);
        }

    }
}


import java.util.Scanner;

public class Main {

    public static void main(String []args){
        Scanner sc = new Scanner(System.in);

        final int N = 200000 + 5;
        int n = sc.nextInt();
        int k = sc.nextInt();
        int q = sc.nextInt();
        long []dist = new long[N];
        int a,b;

        for(int i = 0 ; i < N ; i++){
            dist[i] = 0;
        }

        for(int i = 0 ; i < n ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            dist[a] ++;
            dist[b + 1]--;
        }

        for(int i = 1 ; i < N ; i++){
            dist[i] += dist[i-1];
        }

        for(int i = 0 ; i < N ; i++){
            dist[i] = (dist[i] < k) ? 0 :1;
        }

        for(int i = 1 ; i < N ;i++){
            dist[i] += dist[i - 1];
        }

        for(int i = 0 ; i < q ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            System.out.println(dist[b] - dist[a - 1]);
        }

    }
}


import java.util.Scanner;

public class Main {

    public static void main(String []args){
        Scanner sc = new Scanner(System.in);

        final int N = 200000 + 5;
        int n = sc.nextInt();
        int k = sc.nextInt();
        int q = sc.nextInt();
        int []dist = new int[N];
        int a,b;

       /* for(int i = 0 ; i < N ; i++){
            dist[i] = 0;
        }*/

        for(int i = 0 ; i < n ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            dist[a] ++;
            dist[b + 1]--;
        }

        for(int i = 1 ; i < N ; i++){
            dist[i] += dist[i-1];
        }

        for(int i = 0 ; i < N ; i++){
            dist[i] = (dist[i] < k) ? 0 :1;
        }

        for(int i = 1 ; i < N ;i++){
            dist[i] += dist[i - 1];
        }

        for(int i = 0 ; i < q ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            System.out.println(dist[b] - dist[a - 1]);
        }

    }
}


    import java.util.Scanner;

    public class Main {

        public static void main(String []args){
            Scanner sc = new Scanner(System.in);

            final int N = 200000 + 5;
            int n = sc.nextInt();
            int k = sc.nextInt();
            int q = sc.nextInt();
            long []dist = new long[N];
            int a,b,sum = 0;

            for(int i = 0 ; i < n ; i++){
                a = sc.nextInt();
                b = sc.nextInt();
                dist[a] ++;
                dist[b + 1]--;
            }

            for(int i = 1 ; i < dist.length ; i++){
                sum += dist[i];
                dist[i] = (sum >= k) ? 1 : 0;
            }

            for(int i = 1 ; i < dist.length ; i++){
                dist[i] += dist[i-1];
            }

            for(int i = 0 ; i < q ; i++){
                a = sc.nextInt();
                b = sc.nextInt();
                System.out.println(dist[b] - dist[a - 1]);
            }

        }
    }


import java.util.Scanner;

public class Main {

    public static void main(String []args){
        Scanner sc = new Scanner(System.in);

        final int N = 200000 + 7;
        int n = sc.nextInt();
        int k = sc.nextInt();
        int q = sc.nextInt();
        long []dist = new long[N];
        int a,b;

        for(int i = 0 ; i < N ; i++){
            dist[i] = 0;
        }

        for(int i = 0 ; i < n ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            dist[a] ++;
            dist[b + 1]--;
        }

        for(int i = 1 ; i < N ; i++){
            dist[i] += dist[i-1];
        }

        for(int i = 0 ; i < N ; i++){
            dist[i] = (dist[i] < k) ? 0 :1;
        }

        for(int i = 1 ; i < N ;i++){
            dist[i] += dist[i - 1];
        }

        for(int i = 0 ; i < q ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            System.out.println(dist[b] - dist[a - 1]);
        }

    }
}


import java.util.Scanner;

public class Main {

    public static void main(String []args){
        Scanner sc = new Scanner(System.in);

        final int N = 200001;
        int n = sc.nextInt();
        int k = sc.nextInt();
        int q = sc.nextInt();
        int []dist = new int[N];
        int a,b;

        for(int i = 0 ; i < N ; i++){
            dist[i] = 0;
        }

        for(int i = 0 ; i < n ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            dist[a] ++;
            dist[b + 1]--;
        }

        for(int i = 1 ; i < N ; i++){
            dist[i] += dist[i-1];
        }

        for(int i = 0 ; i < N ; i++){
            dist[i] = (dist[i] < k) ? 0 :1;
        }

        for(int i = 1 ; i < N ;i++){
            dist[i] += dist[i - 1];
        }

        for(int i = 0 ; i < q ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            System.out.println(dist[b] - dist[a - 1]);
        }

    }
}


import java.util.Scanner;

public class Main {
    public static void main(String []args){
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int k = sc.nextInt();
        int q = sc.nextInt();
        int []l = new int[n + 1];
        int []r = new int[n + 1];
        int []a = new int[q + 1];
        int []b = new int[q + 1];

        for(int i = 0 ; i < n ; i++){
            l[i] = sc.nextInt();
            r[i] = sc.nextInt();
        }

        for(int i = 0 ; i < q ; i++){
            a[i] = sc.nextInt();
            b[i] = sc.nextInt();
        }

        for(int i = 0 ; i < q ; i++){
            int begin = a[i];
            int end = b[i];
            int answer = 0;
            for(int it = begin ; it <= end ; it++){
                int counter = 0;
                for(int j = 0 ; j < n ; j++){
                    if(l[j] <= it && r[j] >= it){
                        counter++;
                    }
                    if(counter == k){
                        answer++;
                        break;
                    }
                }
            }
            System.out.println(answer);
        }

    }
}


import java.util.Scanner;

public class Main {

    public static void main(String []args){
        Scanner sc = new Scanner(System.in);

        final int N = 200000 + 7;
        int n = sc.nextInt();
        int k = sc.nextInt();
        int q = sc.nextInt();
        long []dist = new long[N];
        int a,b;

        for(int i = 0 ; i < n ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            dist[a] ++;
            dist[b + 1]--;
        }

        for(int i = 1 ; i < N ; i++){
            dist[i] += dist[i-1];
        }

        for(int i = 0 ; i < N ; i++){
            dist[i] = (dist[i] < k) ? 0 :1;
        }

        for(int i = 1 ; i < N ;i++){
            dist[i] += dist[i - 1];
        }

        for(int i = 0 ; i < q ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            System.out.println(dist[b] - dist[a - 1]);
        }

    }
}


import java.util.Scanner;

public class Main {

    public static void main(String []args){
        Scanner sc = new Scanner(System.in);

        final int N = 200000 + 5;
        int n = sc.nextInt();
        int k = sc.nextInt();
        int q = sc.nextInt();
        long []dist = new long[N];
        int a,b;

        for(int i = 0 ; i < n ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            dist[a] ++;
            dist[b + 1]--;
        }

        for(int i = 1 ; i < dist.length ; i++){
            dist[i] += dist[i-1];
            dist[i - 1] = (dist[i - 1] >= k) ? 1 :0;
        }

        /*for(int i = 1; i < dist.length ; i++){
            dist[i] = (dist[i] >= k) ? 1 :0;
        }*/

        for(int i = 1 ; i < dist.length ;i++){
            dist[i] += dist[i - 1];
        }

        for(int i = 0 ; i < q ; i++){
            a = sc.nextInt();
            b = sc.nextInt();
            System.out.println(dist[b] - dist[a - 1]);
        }

    }
}