#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

typedef struct _point {
    int x;
    int y;
} point;

int main(int argc, char **argv){
    int n, q;
    point *h, *r;
    int i, j, k, l, max, min;
    int debug=atoi(argv[1]);
    /* Acquisizione dati */
    scanf("%d", &n);
    scanf("%d", &q);

    h=(point *)malloc(sizeof(point)*n);
    r=(point *)malloc(sizeof(point)*q);

    for(i=0; i<n; i++)
        scanf("%d %d", &(h[i].x), &(h[i].y));
    
    for(j=0; j<q; j++)
        scanf("%d %d", &(r[j].x), &(r[j].y));
    /* Stampe per debug */
    if (debug) {
        for(i=0; i<n; i++)
            printf("(%d, %d)\n", h[i].x, h[i].y);
        for(j=0; j<q; j++)
            printf("%d-%d\n", r[j].x, r[j].y);
    }

    for(j=0; j<q; j++){
        if ((r[j].y-r[j].x)<2) printf("0\n"); /* evita il calcolo se il quadrato racchiude 1 solo punto */
        else {
            min=INT_MAX; /* lato massimo possibile */
            for(i=r[j].x-1; i<r[j].y; i++){ /* elemento escluso i, prova tutti i possibili i*/
                max=0; /* lato del quadrato che comprende tutti i punti escluso i */
                for(k=r[j].x-1; k<r[j].y; k++){      /* selezionano tutte le coppie */
                    for(l=r[j].x-1; l<r[j].y; l++){  /* di punti */
                        if (k!=i && l!=i){ /* escludiamo le coppie comprendenti il punto di indice i */
                            /* confrontiamo i punti di indice k e l */
                            int dx=h[k].x-h[l].x; /* distanza lungo asse x */
                            int dy=h[k].y-h[l].y; /* distanza lungo asse y */
                            dx = dx<0 ? -dx : dx; /* valore assoluto */
                            dy = dy<0 ? -dy : dy; /* valore assoluto di d2 */
                            if (debug) 
                                printf("(%d, %d) (%d, %d) %d, %d\n", h[k].x, h[k].y, h[l].x, h[l].y, dx, dy);
                            /* Aggiornamento del lato del quadrato contenitore */
                            if (dx>max) max=dx;
                            if (dy>max) max=dy;
                            if (debug) printf("max: %d\n", max);
                        }
                    }
                }
                /* valuta se esclusione del punto di indice i riduce la dimensione del quadrato */
                if (max<min) min=max;
                if (debug) printf("min: %d\n", min);
            }
            printf("%d\n", min);
        }
    }


    free(h);
    free(r);
    return 0;
}
