
typedef struct Node{

	struct Node* next;
	int value;

} Node;

void main () {
	
	Node a;
	Node b;
	Node* p;
	a.value = 4;
	a.next = &b;
	b.value = a.value+1; //b.value=5
	
	#pragma TASS assert a.value == 4;
	#pragma TASS assert b.value == 5;
	#pragma TASS assert a.next->value == 5;
	
	p=&a;
	b.next = p; //b.next = a
	#pragma TASS assert p->value == 4; //a.value = 4
	(*b.next).value = (*b.next).value-2; //a.value = a.value-2 (which should be 2)
	(*(*b.next).next).value = b.next->next->value + b.next->value; //b.value = b.value + a.value (which should be 7)

	#pragma TASS assert p->value == 2;
	#pragma TASS assert a.value == 2;
	#pragma TASS assert b.value == 7;
	  
}
