using System;

class Program
{
    static void Main()
    {
        long n = long.Parse(Console.ReadLine());
        long m = long.Parse(Console.ReadLine());
        long k = long.Parse(Console.ReadLine());

        if (n > m) (n, m) = (m, n);

        long[] ans = new long[k];


        static long Sum(long a, long b) => (b - a + 1) * (a + b) / 2;

        void Process(long L, long R, long offset)
        {
            if (L > R) return;

            for (long c = 0; c < k; c++)
            {
                long need = c;   // (s - 2) % k = c  -> то есть (s mod k) = (c+2)%k
                long target = (c + 2) % k;


                long modL = L % k;
                long add = (target - modL + k) % k;
                long first = L + add;

                if (first > R) continue;


                long modR = R % k;
                long sub = (modR - target + k) % k;
                long last = R - sub;

                long count = (last - first) / k + 1;



                long sum_s = Sum(first, last);
                long take = (sum_s / k) - offset * count;

                ans[c] += take;
            }
        }


        Process(2, n + 1, 1);


        for (long c = 0; c < k; c++)
        {
            long target = (c + 2) % k;

            long L = n + 2, R = m + 1;
            if (L > R) continue;

            long modL = L % k;
            long add = (target - modL + k) % k;
            long first = L + add;
            if (first > R) continue;

            long modR = R % k;
            long sub = (modR - target + k) % k;
            long last = R - sub;

            long count = (last - first) / k + 1;

            ans[c] += count * n;
        }

        {
            long A = n + m + 1;
            long L = m + 2, R = n + m;
            if (L <= R)
            {
                for (long c = 0; c < k; c++)
                {
                    long target = (c + 2) % k;

                    long modL = L % k;
                    long add = (target - modL + k) % k;
                    long first = L + add;
                    if (first > R) continue;

                    long modR = R % k;
                    long sub = (modR - target + k) % k;
                    long last = R - sub;

                    long count = (last - first) / k + 1;

                    long sum_s = Sum(first, last);
                    long take = count * A - (sum_s / k);

                    ans[c] += take;
                }
            }
        }

        for (int i = 0; i < k; i++)
            Console.WriteLine(ans[i]);
    }
}