Exact diffusion for distributed optimization and learning — Part I: Algorithm development