private static List <PolaczenieLotnicze> Szukaj2(DaneWyszukiwania dane)
        {
            List <List <PolaczenieLotnicze> > pp = new List <List <PolaczenieLotnicze> >();
            int max = -1;
            int ix  = -1;

            for (int i = 0; i < 5; i++)
            {
                var a = SzukajNatalia(dane.Klonuj());
                pp.Add(a);
            }

            for (int i = 0; i < pp.Count; i++)
            {
                if (pp[i].Count > max)
                {
                    max = pp[i].Count;
                    ix  = i;
                }
            }

            if (ix != -1)
            {
                return(pp[ix]);
            }

            return(null);
        }
        public static WyszukanePolaczenia WyszukajPolaczenia(DaneWyszukiwania dane)
        {
            if (dane == null)
            {
                return(null);
            }
            if (!Lotniska.CzyIstnieje(dane.Zrodlo) || !Lotniska.CzyIstnieje(dane.Cel))
            {
                return(null);
            }
            if (dane.Zrodlo == null || dane.Cel == null || dane.Data <= DateTime.Now || dane.PrzewTak == null || dane.PrzewNie == null || dane.Osoby == null)
            {
                return(null);
            }
            if (dane.PrzewTak.Length == 0)
            {
                return(null);
            }

            if (dane.Osoby.Dorosli <= 0 || dane.Osoby.Mlodziez < 0 || dane.Osoby.Dzieci < 0 || dane.Osoby.Niemowleta < 0)
            {
                return(null);
            }
            int niepelnoletni = dane.Osoby.Dzieci + dane.Osoby.Mlodziez + dane.Osoby.Niemowleta;

            if (niepelnoletni + dane.Osoby.Dorosli > 9)
            {
                return(null);
            }
            if (dane.Osoby.Dorosli < niepelnoletni)
            {
                return(null);
            }

            List <PolaczenieLotnicze> pol = new List <PolaczenieLotnicze>();


            var Piotr   = Task.Run(() => SzukajPiotr(dane.Klonuj()));
            var Natalia = Task.Run(() => Szukaj2(dane.Klonuj()));

            Task.WaitAll(Piotr, Natalia);

            pol.AddRange(Piotr.Result);
            if (Natalia.Result != null)
            {
                pol.AddRange(Natalia.Result);
            }

            if (dane.PrzewTak.Contains("inni"))
            {
                dane.PrzewNie = (from d in dane.PrzewNie select d.ToLower()).ToArray();
                pol           = pol.Where(p => !dane.PrzewNie.Contains(p.Przewoznik.ToLower())).ToList();
            }
            else
            {
                dane.PrzewTak = (from d in dane.PrzewTak select d.ToLower()).ToArray();
                pol           = pol.Where(p => dane.PrzewTak.Contains(p.Przewoznik.ToLower())).ToList();
            }

            WyszukanePolaczenia wysz = new WyszukanePolaczenia();

            wysz.Polaczenia = pol.OrderBy(l => l.DataWylotu).ToArray();
            wysz.Zasoby     = Wydajnosc.PobierzZasoby();
            return(wysz);
        }