[ACM]Q245: Uncompress

[ACM]Q245: Uncompress

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace Q245
{
    class Program
    {
        static private string sr = "";
        static void Main(string[] args)
        {
            for (; ; )
            {
                Console.Write("input>>>");
                string str = Console.ReadLine();
                //string str = "Dear Sally, Please, please do it--1 would 4 Mary very, 1 much."+  
                //"And 4 6 8 everything in 5's power to make 14 pay off for you. -- Thank 2 18 18--";
                str = str.Replace(",", " , ").Replace(".", " . ").Replace("-", " - ").Replace("'", " ' ");
                char[] par = { ' ' };
                string[] sarr = str.Split(par, StringSplitOptions.RemoveEmptyEntries);
                ArrayList lst = new ArrayList();
                for (int i = 0; i < sarr.Length; i++)
                {
                    int k;
                    bool tof = int.TryParse(sarr[i], out k);
                    if (tof)
                    {
                        sr += " " + lst[k - 1];
                        string temp = lst[k - 1].ToString();
                        lst.Remove(temp);
                        lst.Insert(0, temp);
                    }
                    else
                    {
                        if (lst.Count == 0)
                        {
                            lst.Insert(0, sarr[i]);
                            sr += sarr[i];
                        }
                        else
                        {
                            if (sarr[i] != "," && sarr[i] != "." && sarr[i] != "-" && sarr[i] != "'")
                                for (int j = 0; j < lst.Count; j++)
                                {
                                    if (sarr[i] != lst[j].ToString())
                                    {
                                        if (j == lst.Count - 1)
                                        {
                                            lst.Insert(0, sarr[i]);
                                            sr = sr + " " + sarr[i];
                                            break;
                                        }
                                        else
                                        {
                                            continue;
                                        }
                                    }
                                    else
                                    {
                                        lst.Remove(sarr[i]);
                                        lst.Insert(0, sarr[i]);
                                        sr += " " + sarr[i];
                                        break;
                                    }
                                }
                            else
                            {
                                sr += sarr[i];
                            }
                        }
                    }
                }
                Console.WriteLine(sr);
                //Console.ReadLine();
            }
        }
    }
}