/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        ListNode* h1=pHead1;
		vector<int> v;
		int i=0;
		while(h1)
		{
			v.push_back(h1->val);
			h1->val=1001+i;
			h1=h1->next;
			i++;
		}
		ListNode* h2=pHead2;
		ListNode* h3=nullptr;
		while(h2)
		{
			if(h2->val>1000)
			{
				h2->val=v[h2->val-1001];
				if (h3==nullptr)h3=h2;
			}
			h2=h2->next;
		}
		return h3;
    }
};