Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

直方体

アイヅ放送協会の教育番組(ＡＨＫ教育)では、子供向けの工作番組「あそんでつくろ」という番組を放送しています。今日は画用紙で箱を作る回ですが、用意した長方形の画用紙で直方体ができるかを確かめたいと思います。ただし、画用紙は切ったり折ったりしてはいけません。

６つの長方形が与えられるので、それらを使って直方体が作れるかどうか判定するプログラムを作成せよ。

Input

入力は以下の形式で与えられる。

h1 w1
h2 w2
h3 w3
h4 w4
h5 w5
h6 w6

入力は６行からなり、それぞれの行に各長方形の縦の長さを表す整数 hi (1 ≤ hi ≤ 1000) と横の長さを表す整数 wi (1 ≤ wi ≤ 1000) が与えられる。

Output

直方体を作成できる場合には「yes」を、作成できない場合には「no」を出力する。ただし、立方体は直方体の一種なので、立方体の場合でも「yes」と出力する。

Sample Input 1

2 2
2 3
2 3
2 3
2 2
3 2

Sample Output 1

yes

Sample Input 2

2 2
2 3
2 3
2 3
2 2
2 2

Sample Output 2

no

Solution in C# (judge verdict: Wrong Answer)

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

namespace AOJ
{
    class Tuple
    {
        public int Item1 { get; private set; }
        public int Item2 { get; private set; }

        public Tuple(int item1, int item2)
        {
            Item1 = item1;
            Item2 = item2;
        }
    }

    class Program
    {
        static List<Tuple> getInput()
        {
            var input = new List<Tuple>();
            String str;
            String[] strs;

            while ((str = Console.ReadLine()) != null)
            {
                strs = str.Split(' ');
                input.Add(new Tuple(int.Parse(strs[0]), int.Parse(strs[1])));
            }

            return input;
        }

        static String solve(List<Tuple> inputs)
        {
            bool flag = true;
            foreach (var input in inputs)
            {
                flag &= inputs
                    .Where(i => (i.Item1 == input.Item1 && i.Item2 == input.Item2) || (i.Item1 == input.Item2 && i.Item2 == input.Item1))
                    .Count() % 2 == 0;
            }

            return (flag)? "yes" : "no";
        }

        static void Main(string[] args)
        {
            var inputs = getInput();
            Console.WriteLine(solve(inputs));
        }
    }
}