public ServerQueue ChooseQueueForPerson(Person person) {
			var queues = Queues.Values.ToList().Where(x => x.IsOpened).OrderBy(x => x.Id).ToList();

			var firstQueue = queues.First();

			if (person.IsCrippled || person.IsPregnant) {
				var mostShorterQueue = queues.First(x => x.WaitingPeoplesCount == queues.Min(y => y.WaitingPeoplesCount));
				mostShorterQueue.WaitingPeoples.Add(person);
				return mostShorterQueue;
			}

			if (queues.Skip(1).All(x => x.WaitingPeoplesCount > firstQueue.WaitingPeoplesCount) && firstQueue.WaitingPeoplesCount <= 1) {
				firstQueue.WaitingPeoples.Add(person);
				return firstQueue;	
			}

			//Let's always have first queue missed
			var nextQueues = queues.Skip(1).OrderBy(x => x.WaitingPeoples.Count);

			var next = nextQueues.First();
			next.WaitingPeoples.Add(person);
			return next;
		}
		public void AssignNewUnorderedPerson() {
			UnorderedPerson = new Person() {
				Guid = Guid.NewGuid()
			};
		}