using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var nums = new int[] { 1, 2, 3, 4, 3, 2, 1 };
        int target = 4;
        var pairs = FindPairs(nums, target);
        foreach (var pair in pairs)
        {
            Console.WriteLine($"{pair.Item1}, {pair.Item2}");
        }
    }

    static List> FindPairs(int[] nums, int target)
    {
        var seen = new HashSet();
        var pairs = new List>();

        foreach (var num in nums)
        {
            int complement = target - num;
            if (seen.Contains(complement))
            {
                pairs.Add(new Tuple(complement, num));
            }
            seen.Add(num);
        }
        return pairs;
    }
}