Basic principles of product coding