arbitrary non-equal shifts