  Many natural combinatorial problems can be expressed as constraint
satisfaction problems. This class of problems is known to be NP-complete in
general, but certain restrictions on the form of the constraints can ensure
tractability. The standard way to parameterize interesting subclasses of the
constraint satisfaction problem is via finite constraint languages. The main
problem is to classify those subclasses that are solvable in polynomial time
and those that are NP-complete. It was conjectured that if a constraint
language has a weak near unanimity polymorphism then the corresponding
constraint satisfaction problem is tractable, otherwise it is NP-complete.
  In the paper we present an algorithm that solves Constraint Satisfaction
Problem in polynomial time for constraint languages having a weak near
unanimity polymorphism, which proves the remaining part of the conjecture.
