должны одновременно решать две задачи — и устанавливать полезные для результата ограничения, и думать о том, как сделать их предельно понятными