Department of Computer Science and Department of Statistics and Actuarial Science, University of Waterloo, Waterloo, ON, Canada.|Department of Computer Science and Department of Statistics and Actuarial Science, University of Waterloo, Waterloo, ON, Canada.|Department of Computer Science and Department of Statistics and Actuarial Science, University of Waterloo, Waterloo, ON, Canada.