/// <summary>
        ///
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        public static Dictionary <int, List <Tuple <int, int, int> > > FindValidVelocityXs(Target target)
        {
            Dictionary <int, List <Tuple <int, int, int> > > dictVoT = new Dictionary <int, List <Tuple <int, int, int> > >();

            foreach (var velX in Enumerable.Range(10, target.X2))
            {
                var sut = new TrickShotProbe(velX, 0);
                int sec = 0;
                do
                {
                    sec++;
                    sut.DoSecondX();
                    if (target.InsideX(sut.X))
                    {
                        Debug.WriteLine($"velX: {velX}, t: {sec}, X: {sut.X}");
                        if (!dictVoT.ContainsKey(velX))
                        {
                            dictVoT.Add(velX, new List <Tuple <int, int, int> >());
                        }

                        dictVoT[velX].Add(new Tuple <int, int, int>(velX, sec, sut.X));
                    }
                } while (sut.X <= target.X2 && sut.Velx > 0);
            }
            return(dictVoT);
        }