#include<bits/stdc++.h>
using namespace::std;

#define ll long long
#define pb push_back

const int maxn = 2e3 + 20;

int l[maxn] , r[maxn] , x[maxn] , y[maxn];

int val[maxn][maxn] , nxt[maxn][maxn] , fe[maxn] , le[maxn] , n , flz[maxn] , sum[maxn] , z[maxn];

vector<int> posl[maxn] , posr[maxn];

void add_1(int l , int r , int val)
{
	sum[l] += val - l;
	sum[r] -= val - l;

	z[l]++;
	z[r]--;
}

void add(int l , int r , int val)
{
	sum[l] += val;
	sum[r] -= val;
}

void add_m_1(int l , int r , int val)
{
	sum[l] += val + l;
	sum[r] -= val + l;

	z[l]--;
	z[r]++;
}

void handle(int start , int i, int sval)
{
	if(start == n)
		return;

	if(start < fe[i])
	{
		add_1(start , fe[i] , val[i][start]);
		start = fe[i];
	}

	if(start < le[i] + 1)
	{
		add(start , le[i] + 1 , val[i][start]);
		start = le[i] + 1;
	}

	add_m_1(start , start + (val[i][start] - sval) , val[i][start]);
	start = start + (val[i][start] - sval);

	add(start , n , sval);
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int m , k;
	cin >> n >> m >> k;

	for(int i = 0; i < m; i++)
	{
		cin >> l[i] >> r[i];
		l[i]-- , r[i]--;

		posl[l[i]].pb(i);
		posr[r[i]].pb(i);
	}

	for(int i = 0; i < m; i++)
	{
		for(int j = 0; j < n; j++)
			val[i][j] = max(0 , min(r[i] , j + k - 1) - max(l[i] , j) + 1);

		vector<int> st;
		for(int j = n - 1; j >= 0; j--)
		{
			while(!st.empty() && val[i][st.back()] <= val[i][j])
				st.pop_back();

			if(st.empty())
				nxt[i][j] = n;
			else
				nxt[i][j] = st.back();

			st.pb(j);
		}

		int mx = *max_element(val[i] , val[i] + n);

		for(int j = 0; j < n; j++)
			if(val[i][j] == mx)
			{
				fe[i] = j;
				break;
			}

		for(int j = 0; j < n; j++)
			if(val[i][j] == mx)
				le[i] = j;

		flz[i] = n;
		for(int j = le[i]; j < n; j++)
			if(val[i][j] == 0)
			{
				flz[i] = j;
				break;
			}
	}

	int res = 0;
	for(int a = 0; a < n; a++)
	{
		memset(sum , 0 , sizeof sum);
		memset(z , 0 , sizeof z);
		for(int i = 0; i < m; i++)
		{
			add(a , nxt[i][a] , val[i][a]);
			handle(nxt[i][a] , i , val[i][a]);
		}

		for(int i = 1; i < n; i++)
		{
			sum[i] += sum[i - 1];
			z[i] += z[i - 1];
		}

		for(int i = 0; i < n; i++)
			res = max(res , sum[i] + z[i] * i);
	}

	cout << res << endl;
}












