#include <iostream>
using namespace std;

template<class T>
class A{T t;};

template<class T>
void f1(){
	std::cout << "i take one template argument" << std::endl;
}
template<template<class T>class Y>
void f2(){
	std::cout << "i take one template argument which is template" << std::endl;
}

int main() {
	// your code goes here
	f1<int>();	   //ok
	f1<A<int>>();  //ok
	f2<A>();	   //ok
	f2<A<int>>();//error
	f1<A>();	   //error
	return 0;
}