Problem:
Score : 200 points

Problem Statement

Determine if an N-sided polygon (not necessarily convex) with sides of length L_1, L_2, ..., L_N can be drawn in a two-dimensional plane.

You can use the following theorem:

Theorem: an N-sided polygon satisfying the condition can be drawn if and only if the longest side is strictly shorter than the sum of the lengths of the other N-1 sides.

Constraints

All values in input are integers.

3 \leq N \leq 10

1 \leq L_i \leq 100

Input

Input is given from Standard Input in the following format:

N
L_1 L_2 ... L_N

Output

If an N-sided polygon satisfying the condition can be drawn, print Yes; otherwise, print No.

Sample Input 1

4
3 8 5 1

Sample Output 1

Yes

Since 8 < 9 = 3 + 5 + 1, it follows from the theorem that such a polygon can be drawn on a plane.

Sample Input 2

4
3 8 4 1

Sample Output 2

No

Since 8 \geq 8 = 3 + 4 + 1, it follows from the theorem that such a polygon cannot be drawn on a plane.

Sample Input 3

10
1 8 10 5 8 12 34 100 11 3

Sample Output 3

No

Solution in C# (Mono 4.6.2.0) (judge verdict: Accepted)

namespace B
{
    //begin using
    using System;
    using System.Text;
    using System.Collections.Generic;
    using System.Linq;
    using System.IO;
    using System.Globalization;
    using System.Numerics;
    using Comp.IO;

    //end using 

    class Solver
    {
        public void Solve()
        {
            int n = cin.NextInt();
            var l = new int[n];
            int sum = 0;
            for (int i = 0; i < n; i++)
            {
                l[i] = cin.NextInt();
                sum += l[i];
            }
            for (int i = 0; i < n; i++)
            {
                if (sum <= 2 * l[i])
                {
                    Console.WriteLine("No");
                    return;
                }
            }
            Console.WriteLine("Yes");
        }
        static Scanner<Stream> cin = new Scanner<Stream>(Console.OpenStandardInput());
        static Printer cout = new Printer(Console.OpenStandardOutput()) { AutoFlush = false };
        public static void Main(string[] args)
        {
            //var file = new Scanner<FileStream>(new FileStream("temp.txt", FileMode.Append));
            Console.SetOut(cout);
            new Solver().Solve();
            Console.Out.Flush();
        }
    }

    //begin auxiliary class

    //end auxiliary class
}

namespace Comp.IO
{
    using System;
    using System.Text;
    using System.IO;
    using System.Globalization;
    using System.Numerics;

    public class Scanner<T>
    where T : Stream
    {
        public Scanner(T stream) { str = stream; }
        private readonly T str;
        private byte[] buf = new byte[1024];
        private int len, itr;
        public bool isEof = false;
        // public bool IsEndOfStream { get { return isEof; } }
        private byte read()
        {
            if (isEof) throw new EndOfStreamException();
            if (itr >= len)
            {
                itr = 0;
                if ((len = str.Read(buf, 0, 1024)) <= 0)
                {
                    isEof = true;
                    return 0;
                }
            }
            return buf[itr++];
        }
        public char NextChar()
        {
            byte b = 0;
            do b = read();
            while (b < 33 || 126 < b);
            return (char)b;
        }
        public string NextString()
        {
            var sb = new StringBuilder();
            char c = NextChar();
            while (c >= 33 && c <= 126) { sb.Append(c); c = (char)read(); }
            return sb.ToString();
        }
        public long NextLong()
        {
            long ret = 0; byte b = 0; var negative = false;
            do b = read();
            while (b != '-' && (b < '0' || '9' < b));
            if (b == '-') { negative = true; b = read(); }
            for (; true; b = read())
            {
                if (b < '0' || '9' < b)
                    return negative ? -ret : ret;
                else ret = ret * 10 + b - '0';
            }
        }
        public int NextInt() { return (int)NextLong(); }
        public ulong NextUlong() { return ulong.Parse(NextString()); }
        public double NextDouble() { return double.Parse(NextString(), CultureInfo.InvariantCulture); }
        public decimal NextDecimal() { return decimal.Parse(NextString()); }
    }
    class Printer : StreamWriter
    {
        public override IFormatProvider FormatProvider { get { return CultureInfo.InvariantCulture; } }
        public Printer(Stream stream) : base(stream, new UTF8Encoding(false, true)) { }
        public Printer(Stream stream, Encoding encoding) : base(stream, encoding) { }
    }
}