1#include <iostream>
2#include <vector>
3#include <cstring>
4#include <set>
5#include <algorithm>
6#include <cstdio>
1using namespace std;
2const int N=1E4+7;
3int n,k,Q;
4int siz;
5int pos[N];
6int sum[N];
7int dis[N];
8bool vis[N];
9vector < pair<int,int> > edge[N];
1struct node
2{
3 int l,r;
4 int id;
1 bool operator < (node b)const
2 {
3 if (pos[l]==pos[b.l]) return r<b.r;
4 return pos[l]<pos[b.l];
5 }
}q[N];
1void dfs( int u,int val)
2{
3 vis[u] = true;
4 dis[u+1] = val;
1 int Siz = edge[u].size();
2 for ( int i = 0 ; i < Siz ; i ++)
3 {
4 int v = edge[u][i].first;
1 if (!vis[v])
2 {
3 dfs(v,val+edge[u][i].second);
4 }
5 }
6}
7int main()
8{
1 freopen("in.txt","r",stdin);
2 siz = 100;
3 for ( int i = 0 ; i < 10000 ; i++) pos[i] = i/siz;
4 while (scanf("%d %d %d",&n,&k,&Q)!=EOF)
5 {
6 memset(vis,false,sizeof(vis));
7 memset(dis,0,sizeof(dis));
8 memset(sum,0,sizeof(sum));
9 for ( int i = 1 ;i < n ; i++)
10 {
11 int u = i;
12 int v = i/k;
13 edge[u].push_back(make_pair(v,i));
14 edge[v].push_back(make_pair(u,i));
15 }
1 for ( int i = 1 ;i <= Q ; i++)
2 {
3 scanf("%d %d",&q[i].l,&q[i].r);
4 q[i].id = i;
5 }
sort(q+1,q+Q+1);
1 dfs(0,0);
2 for ( int i = 1 ; i <= n ; i++) sum[i] = sum[i-1]+dis[i];
3 }
4}