Parallel and distributed systems rely on intricate protocols to manage shared resources and synchronize, i.e., to manage how many processes are in a particular state. Effective verification of such systems requires universal quantification to reason about parameterized state and cardinalities tracking sets of processes, messages, failures to adequately capture protocol logic. In this paper we present #Π, an automatic invariant synthesis method that integrates cardinality based reasoning and universal quantification. The resulting increase of expressiveness allows #Π to verify, for the first time, a representative collection of intricate parameterized protocols.