public bool pickProducts(Warehouse warehouse, Client client)
        {
            capacityLeft = maxCapacity;
            item.Clear();

            int turnsWarehouse = (int)Math.Ceiling(Math.Sqrt((x - warehouse.x) * (x - warehouse.x) + (y - warehouse.y) * (y - warehouse.y)));
            int turnsClient = (int)Math.Ceiling(Math.Sqrt((x - client.x) * (x - client.x) + (y - client.y) * (y - client.y)));
            int totalTurns = 2 + turnsWarehouse + turnsClient;

            if (totalTurns > turnsLeft)
                return false;

            turnsLeft -= totalTurns;

            for (int i = 0; i < client.orderCount; i++)
            {
                if (warehouse.productAvailability[client.orderType[i]] > 0 && capacityLeft >= Program.productWeight[client.orderType[i]])
                {
                    warehouse.productAvailability[client.orderType[i]]--;
                    capacityLeft -= Program.productWeight[client.orderType[i]];
                    item.Add(client.orderType[i]);
                }
            }

            if (item.Count == 0)
                return false;

            for (int i = 0; i < item.Count; i++)
            {
                using (TextWriter writer = new StreamWriter(Program.outputPath, true))
                {
                    writer.Write(myIndex + " L " + warehouse.myIndex + " " + item[i] + " " + 1 + Environment.NewLine);
                    writer.Flush();
                }
                //File.AppendAllText(Program.outputPath, myIndex + " L " + warehouse.myIndex + " " + item[i] + " " + 1 + Environment.NewLine);

                for (int j = 0; j < client.orderCount; j++)
                {
                    if (item[i] == client.orderType[j])
                    {
                        client.orderType.RemoveAt(j);
                        break;
                    }
                }
            }

            client.orderCount -= item.Count;

            for (int i = 0; i < item.Count; i++)
            {
                //File.AppendAllText(Program.outputPath, myIndex + " D " + client.myIndex + " " + item[i] + " " + 1 + Environment.NewLine);
                using (TextWriter writer = new StreamWriter(Program.outputPath,true))
                {
                    writer.Write(myIndex + " D " + client.myIndex + " " + item[i] + " " + 1 + Environment.NewLine);
                    writer.Flush();
                }
            }

            return true;
        }
        public static void readInput(string path)
        {
            using (TextReader reader = File.OpenText(path))
            {
                string line = reader.ReadLine();
                string[] bits = line.Split(' ');

                rows = int.Parse(bits[0]);
                columns = int.Parse(bits[1]);
                droneCount = int.Parse(bits[2]);
                totalTurns = int.Parse(bits[3]);
                droneMaxCapacity = int.Parse(bits[4]);

                drone = new Drone[droneCount];
                droneChecked = new int[droneCount];

                line = reader.ReadLine();
                productCount = int.Parse(line);
                productWeight = new int[productCount];

                line = reader.ReadLine();
                bits = line.Split(' ');

                for (int i = 0; i < productCount; i++)
                {
                    productWeight[i] = int.Parse(bits[i]);
                }

                line = reader.ReadLine();
                warehouseCount = int.Parse(line);
                warehouse = new Warehouse[warehouseCount];

                for (int i = 0 ; i < warehouseCount; i++)
                {
                    line = reader.ReadLine();
                    bits = line.Split(' ');

                    warehouse[i] = new Warehouse(int.Parse(bits[0]), int.Parse(bits[1]),i);

                    line = reader.ReadLine();
                    bits = line.Split(' ');

                    for (int j = 0; j < productCount; j++)
                    {
                        warehouse[i].productAvailability.Add(int.Parse(bits[j]));
                    }

                }

                Drone.maxCapacity = droneMaxCapacity;
                for (int i = 0; i < droneCount; i++)
                {
                    drone[i] = new Drone(totalTurns);
                    drone[i].myIndex = i;
                }

                line = reader.ReadLine();
                clientCount = int.Parse(line);
                client = new List<Client>();
                clientChecked = new int[clientCount];

                for (int i = 0; i < clientCount; i++)
                {
                    line = reader.ReadLine();
                    bits = line.Split(' ');
                    int x = int.Parse(bits[0]);
                    int y = int.Parse(bits[1]);

                    line = reader.ReadLine();
                    int orderCount = int.Parse(line);

                    client.Add( new Client(x, y, orderCount, productCount, i));

                    line = reader.ReadLine();
                    bits = line.Split(' ');

                    for (int j = 0; j < orderCount; j++)
                    {
                        int order = int.Parse(bits[j]);
                        client[i].orderType.Add(order);
                        client[i].product[order] = true;
                    }

                }
            }

            return;
        }