#include <cstring>
#include <algorithm>
#include <iostream>


void DFS(int (&used)[20], const int (&m)[20][20], int c, int& maxn, int k, int v) {
    used[v] = 1;
    k += 1;
    if(k > maxn)
        maxn = k;
    for(int i = 0; i < c; ++i) {
        if(!used[i] && m[v][i] == 1) {
            DFS(used, m, c, maxn, k, i);
        }
    }
    used[v] = 0;
}

int main() {
    const long a[20] = {1, 1, 3, 7, 13};
	const int c = 5;

	int m[20][20];
    memset(m, 0, sizeof(m));

    for(int i = 0; i < c; ++i) {
        for(int j = i + 1; j < c; ++j) {
            if( (a[i] % a[j] == 0) || (a[j] % a[i] == 0) ) {
                m[i][j] = m[j][i] = 1; // Creating 2D array
            }
        }
    }

	int maxn = 0;
    for(int i = 0; i < c; ++i) {
    	int used[20];
        int k = 0;
        memset(used, 0, sizeof(used));
        DFS(used, m, c, maxn, k, i);
    }
    std::cout << maxn << std::endl;
}
