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

#define x first
#define y second
#define ll long long
#define pb(x) push_back(x)
#define vall(x) x.begin(), x.end()
#define MOD 1000000007
#define mp(x,y) make_pair(x,y)

////binary getting to power n
//int binpow(int a,int n){
//	int res=1;
//	while(n){
//		if(n&1)res*=a;
//		a*=a;
//		n>>=1;
//	}
//	return res;
//}
//
////Euler function
//int phi(int n){
//	int res=n;
//	for(int i=2;i*i<=n;++i)
//		if(n%i==0){
//			while(n%i==0)n /= i;
//			res-=res/i;
//		}
//	if(n>1)res-=res/n;
//	return res;
//}
//
////greatest common divisor
//int gcd(int a,int b){
//	while(b){
//		a%=b;
//		swap(a,b);
//	}
//	return a;
//}
//
////least common multiple
//int lcm(int a,int b){
//	return a*b/gcd(a,b);
//}
//
////from decimal to binary
//string to_bin(int n){
//	string res;
//	while(n>0){
//		res.insert(0,'0'+n%2);
//		n/=2;
//	}
//	return res;
//}

//bool prime[10001];

void solve(){
	double n,m,k;
	cin>>n>>m>>k;
	ll a=ceil(n/k),b=ceil(m/k);
	cout<<a*b;
	return;
}

int main(){
//	for(int i=2; i<=10000; i++) prime[i]=true;
//	for(int i=2; i<=10000; i++){
//		if(prime[i]==true){
//			int mp=i;
//			while(i*mp<=10000){
//				prime[i*mp]=false;
//				mp++;
//			}
//		}
//	}
	int t=1;
//	cin>>t;
	while(t--) solve();
	return 0;
}
