Problem:
４進数

10 進数は現在使われている一般的な記数法で、0、1、2、3、4、5、6、7、8、9 の10 個の記号を用いて全ての数字を表します。

2 進数はコンピュータの世界でよく使われる記数法で、0 と1 の二つの記号を用いて全ての数字を表します。

4 進数で用いられるのは 0、1、2、3 の 4 つの数字だけです。4 進数では 0 から順に数を増やしていったときに 4 まで来たら次の位に桁上がりします。そのため、10 進数の 4 は桁上がりして「10」という表現になります。

10 進数

0

1

2

3

4

5

6

7

8

9

10

...

2 進数

0

1

10

11

100

101

110

111

1000

101

1010

...

4 進数

0

1

2

3

10

11

12

13

20

21

22

...

昔ハワイでは魚やタロイモを指にはさんで数えていたので、10 進数ではなく4 進数を使っていたそうです。

10 進数で入力される整数 n を 4 進数に変換し出力するプログラムを作成してください。

Input

複数のデータセットの並びが入力として与えられます。入力の終わりは -1 ひとつの行で示されます。各データセットとして１つの整数 n (0 ≤ n ≤ 1000000) が１行に与えられます。

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

Output

入力データセット毎に 4 進数に変換した結果を１行に出力します。

Sample Input

7
4
0
12
10
10000
-1

Output for the Sample Input

13
10
0
30
22
2130100

Solution in C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.ComponentModel.Design;
using System.Dynamic;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.IO.Pipes;
using System.Linq;
using System.Numerics;
using System.Text;
using static System.Console;
using static System.Math;

namespace AtCoder
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 2000; i++)
            {
                var n = ReadInt();
                if (n == -1) break;
                if (n == 0) WriteLine(0);
                else WriteLine(IntToNString(n,4));
            }
        }
        public static string IntToNString(int x, int n)
        {
            var nstring = "";
            var numbers = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
            int r = 1; 
            int q = x;  
            while (q > 0)
            {
                r = q % n;
                nstring += numbers[r];
                q = q / n;
            }
            return string.Join("", nstring.Reverse());
        }
        public static int CountChar(string s, char c)
        {
            return s.Length - s.Replace(c.ToString(), "").Length;
        }
        private static string Read() { return ReadLine(); }
        private static string[] Reads() { return (Read().Split()); }
        private static int ReadInt() { return int.Parse(Read()); }
        private static long ReadLong() { return long.Parse(Read()); }
        private static double ReadDouble() { return double.Parse(Read()); }
        private static int[] ReadInts() { return Array.ConvertAll(Read().Split(), int.Parse); }
        private static long[] ReadLongs() { return Array.ConvertAll(Read().Split(), long.Parse); }
        private static double[] ReadDoubles() { return Array.ConvertAll(Read().Split(), double.Parse); }
    }
}