void solve() {
    int w = 0;
    int h = 0;
    int nBlocks = 0;
    cin >> w >> h >> nBlocks;
    Blocks blocks;
    blocks.resize(h + 1);
    for (int y = 0; y <= h; ++y) {
        blocks[y].resize(w + 1);
    }

    for (int i = 0; i < nBlocks; ++i) {
        int x = 0;
        int y = 0;
        cin >> x >> y;
        blocks[y][x] = true;
    }

    int nSolution = 0;
    uint nMinSolutionLength =  numeric_limits<unsigned long long>::max();
    travelse(0, 0, w, h, blocks, nSolution, 1, nMinSolutionLength);
    solutions.push_back(nSolution);
}