public Stolik chceStolik(Osoba osobaChcacaStolik) throws InterruptedException {
		lock.lock();
		try {
			log.info("osoba numer {} z pary {} wchodzi", osobaChcacaStolik.podajNumerOsoby(),
					osobaChcacaStolik.podajNumer());
			++pary[osobaChcacaStolik.podajNumer()];

			while (pary[osobaChcacaStolik.podajNumer()] < 2) {
				log.info("osoba numer {} z pary {} zasypia czekając na komplet", osobaChcacaStolik.podajNumerOsoby(),
						osobaChcacaStolik.podajNumer());
				monitorPar[osobaChcacaStolik.podajNumer()].await();
				log.info("osoba numer {} z pary {} budzi się czekając na komplet", osobaChcacaStolik.podajNumerOsoby(),
						osobaChcacaStolik.podajNumer());
			}

			monitorPar[osobaChcacaStolik.podajNumer()].signalAll();

			boolean osobaMozeUsiascJesliStolikJestZajety = numerSiedzacychPrzyStoiku >= 0
					&& (osobaChcacaStolik.podajNumer() == numerSiedzacychPrzyStoiku);
			boolean stolikJestPusty = numerSiedzacychPrzyStoiku < 0;
			log.info("osoba numer {} z pary {} próbuje usiaść przy stoliku", osobaChcacaStolik.podajNumerOsoby(),
					osobaChcacaStolik.podajNumer());
			while (!(osobaMozeUsiascJesliStolikJestZajety || stolikJestPusty)) {
				log.info("osoba numer {} z pary {} zasypia czekając na stolik", osobaChcacaStolik.podajNumerOsoby(),
						osobaChcacaStolik.podajNumer());
				monitorStolika.await();
				osobaMozeUsiascJesliStolikJestZajety = numerSiedzacychPrzyStoiku >= 0
						&& (osobaChcacaStolik.podajNumer() == numerSiedzacychPrzyStoiku);
				stolikJestPusty = numerSiedzacychPrzyStoiku < 0;
				log.info("osoba numer {} z pary {} próbuje usiaść przy stoliku", osobaChcacaStolik.podajNumerOsoby(),
						osobaChcacaStolik.podajNumer());
			}
			if (numerSiedzacychPrzyStoiku < 0) {
				log.info("osoba numer {} z pary {} zajęła stolik", osobaChcacaStolik.podajNumerOsoby(),
						osobaChcacaStolik.podajNumer());
				numerSiedzacychPrzyStoiku = osobaChcacaStolik.podajNumer();
			}
			++iloscSiedzacychPrzyStoliku;
                        log.info("osoba numer {} z pary {} jest {} przy stoliku",osobaChcacaStolik.podajNumerOsoby(),osobaChcacaStolik.podajNumer(),(iloscSiedzacychPrzyStoliku==1)?"pierwsza":"druga");
			return stolik;

		} finally {
			lock.unlock();
		}
	}