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 Ruby (judge verdict: Wrong Answer)

readlines.map(&:to_i).each{|n|
  cnt = 0
  1001.times{|a|
    break if n - a < 0
    next if n - a > 3000
    a.upto(1001){|b|
      break if n - a - b < 0
      next if n - a - b > 2000
      abflag = (a == b ? true : false)
      cd = n - a - b
      next if cd > 2000
      break if cd / 2 < b
      cdflag = (cd - cd/2 == cd / 2 ? true : false)
      bcflag = (b == cd / 2 ? true : false)
      num = [cd/2-b, 1000-cd/2].min
      if abflag
        if cdflag
          if bcflag
            cnt += 1
          else
            if num > 0
              cnt += 4+12*num - 6
            else
              cnt += 6
            end
          end
        else
          cnt += 4+12*num
        end
      else
        if cdflag && bcflag
          cnt += 4+24*num
        elsif cdflag
          if num > 0
            cnt += 12+24*num - 12
          else
            cnt += 12
          end
        else
          cnt += 12+24*num
        end
      end
    }
  }
  puts cnt
}