Problem:
Score : 400 points

Problem Statement

Given is an integer S.
Find a combination of six integers X_1,Y_1,X_2,Y_2,X_3, and Y_3 that satisfies all of the following conditions:

0 \leq X_1,Y_1,X_2,Y_2,X_3,Y_3 \leq 10^9

The area of the triangle in a two-dimensional plane whose vertices are (X_1,Y_1),(X_2,Y_2), and (X_3,Y_3) is S/2.

We can prove that there always exist six integers that satisfy the conditions under the constraints of this problem.

Constraints

1 \leq S \leq 10^{18}

All values in input are integers.

Input

Input is given from Standard Input in the following format:

S

Output

Print six integers X_1,Y_1,X_2,Y_2,X_3, and Y_3 that satisfy the conditions, in this order, with spaces in between.
If multiple solutions exist, any of them will be accepted.

Sample Input 1

3

Sample Output 1

1 0 2 2 0 1

The area of the triangle in a two-dimensional plane whose vertices are (1,0),(2,2), and (0,1) is 3/2.
Printing 3 0 3 1 0 1 or 1 0 0 1 2 2 will also be accepted.

Sample Input 2

100

Sample Output 2

0 0 10 0 0 10

Sample Input 3

311114770564041497

Sample Output 3

314159265 358979323 846264338 327950288 419716939 937510582

Solution in Ruby (2.3.3) (judge verdict: Wrong Answer)

class NemiLib
  # 素因数分解ハッシュ形式
  # (例)100なら{2=>2,5=>2}
  def prime_factorization(num, result = Hash.new(0))
    return {} if num < 1
    return {1=>1} if num == 1

    divides = false
    to = Math.sqrt(num).floor
    (2..to).each_with_index do |item, i|
      if num % item == 0
        result[item] += 1
        prime_factorization(num / item, result)
        divides = true
        break
      end
    end
    # 何も割れないなら、その数を入れる
    result[num] += 1 unless divides

    result
  end
end

s = gets.to_i

# 1:0,0
# 2:x軸上、x,0
# 3:y軸上、0,y
x,y=0,0
#sqrt = Math.sqrt(s).floor
# 最大値対策
# if sqrt == Math.sqrt(s)
#   puts [0,0,sqrt,0,0,sqrt].join(' ')
#   exit
# end

pf = NemiLib.new.prime_factorization(s)
sorted = pf.keys.sort{|a,b|b<=>a}
puts pf.to_s
x = 1
y = 1
count = 0
sorted.each do |key|
  val = pf[key]
  1.upto(val) do |nn|
    count += 1
    if count % 2 == 0
      x *= key
      #puts x
    else
      y *= key
      #puts y
    end
  end
end

puts [0,0,x,0,0,y].join(' ')