#include <iostream>
using namespace std;
template<int N>
class A
{
public:
enum{ result = N + A<N - 1>::result};
};
template<>
class A<1>
{
public:
enum{result=1};
};
int main()
{
cout << A<500>::result << endl;
return 0;
}
#include<iostream>
using namespace std;
template<int N,int M>
class A
{
public:
enum{ mid = (N+M) /2};
static const int result = M+ A<N, mid>::result+A<mid,M-1>::result;
};
template<int M>
class A<M,M>
{
public:
static const int result = 0;
};
int main()
{
cout << A<0, 10000>::result << endl;
return 0;
}