#include <vector>
#include <algorithm>
using namespace std;

class YetAnotherIncredibleMachine {
public:
    int countWays(vector<int> platformMount, vector<int> platformLength, vector<int> balls) {
        balls.push_back(-100000);
        balls.push_back(100000);
        sort(balls.begin(), balls.end());

        int ret = 1;
        for (int i = 0; i + 1 < balls.size(); ++i) {
            int st = balls[i], ed = balls[i + 1];
            for (int j = 0; j < platformMount.size(); ++j) {
                if (platformMount[j] < st || platformMount[j] > ed) {
                    continue;
                }
                int mst = max(st + 1, platformMount[j] - platformLength[j]);
                int med = min(ed - 1, platformMount[j] + platformLength[j]);
                int val = max(0, med - mst - platformLength[j] + 1);
                ret = (long long)ret * val % 1000000009;
            }
        }
        return ret;
    }
};