Problem:
Score: 200 points

Problem Statement

We have a string S consisting of lowercase English letters.

If the length of S is at most K, print S without change.

If the length of S exceeds K, extract the first K characters in S, append ... to the end of them, and print the result.

Constraints

K is an integer between 1 and 100 (inclusive).

S is a string consisting of lowercase English letters.

The length of S is between 1 and 100 (inclusive).

Input

Input is given from Standard Input in the following format:

K
S

Output

Print a string as stated in Problem Statement.

Sample Input 1

7
nikoandsolstice

Sample Output 1

nikoand...

nikoandsolstice has a length of 15, which exceeds K=7.

We should extract the first 7 characters in this string, append ... to the end of them, and print the result nikoand....

Sample Input 2

40
ferelibenterhominesidquodvoluntcredunt

Sample Output 2

ferelibenterhominesidquodvoluntcredunt

The famous quote from Gaius Julius Caesar.

Solution in C# (.NET Core 3.1.201) (judge verdict: Accepted)

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

namespace debug
{
    class main
    {
        static void Main(string[] args)
        {
            //問題クラスを展開
            ProgramB a = new ProgramB();
            a.main();//実行する

        }

    }

    class ProgramA
    {
        public void main()
        {
            //入力
            string[] s = Console.ReadLine().Split(' ');
            int[] a = new int[2];

            //地下は0から、地上はそのままカウント
            for (int i = 0; i < 2; i++)
            {
                if (s[i][0] == 'B')
                    a[i] = -(s[i][1] - '1');
                else
                    a[i] = s[i][0] - '0';

            }

            //答え出力
            Console.WriteLine(Math.Abs(a[0] - a[1]));
        }
    }

    class ProgramB
    {
        public void main()
        {
            //入力
            int n = int.Parse(Console.ReadLine());
            string s = Console.ReadLine();

            //頭から読んで投票する
            if (s.Length <= n)
            {
                Console.WriteLine(s);
                return;
            }

            for(int i = 0;i < n;i++)
                Console.Write(s[i]);

            Console.Write("...");



        }
    }

    class ProgramC
    {
        public void main()
        {
            //入力
            int n = int.Parse(Console.ReadLine());
            string[] t = Console.ReadLine().Split(' ');
            char[,] tower = new char[n, 2 * n - 1];


            //ピラミッドを入れる
            for (int i = 0; i < n; i++)
            {
                string s = Console.ReadLine();
                for (int j = 0; j < 2 * n - 1; j++)
                    tower[i, j] = s[j];
            }

            //下から順にみていく。下を見たとき、一つ上とその左右を判定
            for (int i = n - 1; i > 0; i--)
            {
                for (int j = 0; j < 2 * n - 1; j++)
                {
                    //Xのときを考える
                    if (tower[i, j] == 'X')
                    {
                        //一番下だけは別条件
                        if (j == 0)
                            tower[i - 1, j + 1] = 'X';
                        else if (j == 2 * n - 2)
                            tower[i - 1, j - 1] = 'X';
                        else
                        {
                            //一般的な処理、#ならXに置き換える
                            if (tower[i - 1, j - 1] == '#')
                                tower[i - 1, j - 1] = 'X';

                            if (tower[i - 1, j] == '#')
                                tower[i - 1, j] = 'X';

                            if (tower[i - 1, j + 1] == '#')
                                tower[i - 1, j + 1] = 'X';

                        }

                    }
                }
            }

            //答え出力
            for (int i = 0; i < n; i++)
                for (int j = 0; j < 2 * n - 1; j++)
                {
                    if (j != 2 * n - 2)
                        Console.Write(tower[i, j]);
                    else
                        Console.WriteLine(tower[i, j]);
                }


        }
    }

    class ProgramD
    {
        public void main()
        {
            //入力
            string s = Console.ReadLine();

            long ans = 0;

            


            Console.WriteLine(ans);
        }
    }

    class ProgramE
    {
        public void main()
        {
            int n = int.Parse(Console.ReadLine());
            string[] s = Console.ReadLine().Split(' ');
            int[] a = new int[n];

            for (int i = 0; i < n; i++)
                a[i] = int.Parse(s[i]) - 1;

            for (int i = 0; i < n; i++)
            {
                int temp = a[a[i]];
                int count = 1;
                while (a[i] != temp)
                {
                    temp = a[temp];
                    count++;

                }

                Console.Write(count + " ");
            }
        }


    }

    class ProgramF
    {
        public void main()
        {
            //入力
            int n = int.Parse(Console.ReadLine());

            //これらはインスタンスが作られていないのであらかじめ作る
            List<int>[] test = new List<int>[200000];

            //インスタンスを入れる
            for (int i = 0; i < 200000; i++)
                test[i] = new List<int>();


            //リストを入れておく
            for (int i = 0; i < n; i++)
            {
                string[] t = Console.ReadLine().Split(' ');
                int a = int.Parse(t[0]);
                int b = int.Parse(t[1]);
                test[a - 1].Add(b);
            }


            //優先度付きキューを使用（これは最大値を常に取り出せる）
            var q = new PriorityQueue<int>(n);

            //M = 1の順に小さい順に取り出す
            long sum = 0;
            for (int i = 0; i < n; i++)
            {
                //それぞれ取り出して優先キューに入れる
                foreach (var s in test[i])
                    q.Enqueue(s);


                //その中で最大を選んで代入
                if (q.Count != 0)
                    sum += q.Dequeue();

                Console.WriteLine(sum);

            }

        }

    }


    class PriorityQueue<T> where T : IComparable<T>
    {
        public readonly T[] Array;
        public readonly bool Greater;
        public int Count { get; private set; } = 0;


        public PriorityQueue(int capacity, bool greater = true)
        {
            this.Array = new T[capacity];
            this.Greater = greater;
        }

        //キューを追加
        public void Enqueue(T item)
        {
            this.Array[this.Count] = item;
            this.Count += 1;//数を足す
            this.UpHeap();　//最後尾に追加したところを移動させる
        }

        public T Dequeue()
        {
            // 先頭要素を末尾にして再構成
            this.Swap(0, this.Count - 1);
            this.Count -= 1;
            this.DownHeap();

            return this.Array[this.Count];
        }

        //親と比較して入れ替えていく
        private void UpHeap()
        {
            var n = this.Count - 1;
            while (n != 0)
            {
                // 親要素の座標
                var parent = (n - 1) / 2;

                //もし親の方がちいさいなら、交換する。
                if (this.Compare(this.Array[n], this.Array[parent]) > 0)
                {
                    this.Swap(n, parent);
                    n = parent;
                }
                else
                {
                    break;
                }
            }
        }

        //子と比較して入れ替えていく
        private void DownHeap()
        {
            var parent = 0;
            while (true)//無限ループ
            {
                var child = 2 * parent + 1;
                //子供がいないなら終わり
                if (child > this.Count - 1) break;

                //子供は2つあるので大きい方を対象にする
                if (child < this.Count - 1 && this.Compare(this.Array[child], this.Array[child + 1]) < 0)
                {
                    // 左より右の子のほうが大きい値の場合、右を入れ替え対象にする
                    child += 1;
                }

                //親と子を比較して子が大きいなら入れ替える。そうでないなら成立なのでおしまい。
                if (this.Compare(this.Array[parent], this.Array[child]) < 0)
                {
                    this.Swap(parent, child);
                    parent = child;
                }
                else
                {
                    break;
                }
            }
        }

        //aとbを比較する
        private int Compare(T a, T b)
        {
            var c = a.CompareTo(b);//a-b、正のときはaが大きく、負のときはbが大きい（任意もので処理できる）
            if (!this.Greater)
            {
                c = -c;
            }
            return c;
        }

        //aとbを入れ替える
        private void Swap(int a, int b)
        {
            var tmp = this.Array[a];
            this.Array[a] = this.Array[b];
            this.Array[b] = tmp;
        }
    }


    
}