Problem:
４つの整数の和 II

4,000 以下の正の整数 n を入力し、0 〜 1000 の範囲の整数 a, b, c, d の組で

a + b + c + d = n

を満たすものの組み合わせ数を出力するプログラムを作成して下さい。

Input

複数のデータセットが与えられます。各データセットに n が１行に与えられます。入力の最後まで処理して下さい。

データセットの数は 50 を超えません。

Output

各データセットごとに、a, b, c, d の組み合わせの個数を１行に出力して下さい。

Sample Input

2
3
35

Output for the Sample Input

10
20
8436

Solution in Haskell (judge verdict: Memory Limit Exceeded)

import Data.List
main = do
  ns <- getContents
  let a = sum' 4
  mapM_  print . map (\n -> a !! n) . map read $ lines ns
sum' :: Int -> [Int]
sum' 0 = [1]
sum' n =  map sum $ transpose (take 1001 $ iterate ([0]++) (sum' (n-1)))