a:6:{i:0;s:20437:"				<div class="h1"><h1>Delightful North East with Pelling Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.rajastravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.rajastravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delightful North East with Pelling Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Darjeeling, Pelling, Gangtok, Pemayangtse Monastery, Enchey Monastery</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delightful North East with Pelling Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="85249"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_13/370602/149889.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/370602/149889.jpg"  height="150"  width="150"    alt="Delightful North East with Pelling Tour" title="Delightful North East with Pelling Tour" loading="lazy" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival in Darjeeling
								</p>
								<p class="aj">The remarkable vacation starts shortly after you reach at New Jalpaiguri Station (NJP), Bagdogra airport (IXB) and Tenzing Norgay Bus Stand (Junction) in West Bengal. From here, you need to travel to Darjeeling, which rests on the northern extreme of the state. Once you arrive, our tour executive will escort you to the hill-town of Darjeeling via road. The serene hill station of Darjeeling is elevated at an altitude of 7100 ft in West Bengal, and 68 km from NJP Railway Station, 69 km from Bagdogra airport and 65 km From the Tenzing Norgay Bus stand.

Engulfed in the snow-clad peaks of Kanchenjunga, Darjeeling is amongst the celebrated tourist attractions in this corner of India. The charm of the hill-town can be defined by its verdant green tea plantations, which are known to be the supreme in the world, its rolling hills and alpine forests. Apart from the acres of tea estates, Darjeeling is also famous for its monasteries and an assortment of town attractions. Other than natural attractions, Darjeeling is also famous for its rustic colonial charm, like the ancient world heritage Darjeeling Himalayan Railway system.

As you reach Darjeeling, check in to our pre-reserved hotel. Spend your evenings at leisure in the guesthouse and if you wish to move out, feel free to lurk around local shopping centers.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Darjeeling Local Sightseeing
								</p>
								<p class="aj">As soon as dawn cracks, you begin the day by 3:45 AM, by heading towards Tiger Hill, which is around 11 km from the main town of Darjeeling. Tiger Hill is one of the major places of interest in Darjeeling and can be reached on foot easily, all along the splendid tea plantations. The top of the hill overlooks the colossal peak in Sikkim, Mt. Kanchenjunga, and if the weather is clear, Mt. Everest also. Its claim to fame has been its tranquilizing view of the sunrise. When rays of the morning sun fall on Mt. Kanchenjunga it illuminates beautifully with a golden orange reflection, and thus offering a breathtaking sight.

While returning, pay a casual visit to the some of the most popular attractions in Darjeeling. Begin from Ghoom monastery, then War Memorial and finally, Batasia Loop.

Just 8 km short of Darjeeling, you will come across Ghoom Monastery, which is resting at an elevation of around 7400 feet. Ghoom Monastery was constructed in the year 1850 by Lama Sherab Gyatso. The well-famed monastery belongs to the Yellow Hat Sect, known as Gelupka. Once inside the monastery, you will witness a 15 foot model of Lord Buddha, which is also referred as Maitreya Buddha. In Buddhism, Maiteya Buddha means Buddha of the upcoming era or the coming Buddha. A compelling fact about the figurine of Maitreya Buddha is that it is all created up of clay, all imported from Tibet. Besides the sculpture of Buddha, the monastery is also noted for housing a vast collection of Buddhist manuscripts.

After departing from the monastery, hop on to the vintage Toy train as it makes its path through the striking landscapes in Darjeeling. The toy train also whistles away through the splendid Batasia Loop, which makes its curve at the Hill Cart road. The loop has a vibrant garden of exotic flowers built in the inner circle of the loop. From the Batasia Loop, you can have a spectacular view of the alluring Darjeeling valley along with the snow-clad peaks of Kanchenjunga.

Right in the heart of the Batasia Loop, stands the War Memorial. As obvious from its name, the structure was erected as a tribute to numerous Gorkha soldiers, who were martyred in military operations since India’s independence. Undoubtedly, an amazing attraction, the War Memorial is amongst the high-flying ones in Darjeeling.

After these jaunts, return back to your inn for savoring the supper. Nearly half an hour later, you would be embarking on seeing the sights in the main town of Darjeeling. This includes visits to Himalayan Montaineering Institute, Tensing Gumpo Rock, Padmaju Naidu Zoological Park, Tibetan Refugee Self Help Cente and Natural History Museum.

Conclude your day on a serene note by visiting the heritage of world peace, Japanese Peace Pagoda, which is located within the complex of other attractions. The Peace Pagoda exhibits four manifestations or forms of Lord Buddha and throws the light on uniting people of all races for global harmony. Pay your visits there and return back to your suite for a snuggy overnight stay. Sundown is meant to walk around the local milieu or shopping in the nearby markets, although you can even prefer staying indoors and stretch limbs.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Transfer to Pelling
								</p>
								<p class="aj">Shortly after finishing breakfast, you would be transferred to Pelling, which is situated in the western division of Sikkim. Highly lauded for its natural vistas and quietude, Pelling in Sikkim is a high-flying hill-town in the northeast India. Elevated at an altitude of around 6800 ft, the hill-town offers a panoramic sight of the highest peak in Sikkim, Mt. Kanchenjunga. Not just Kanchenjuga, the place provides a kaleidoscope of mountain peaks, like Kanchenjunga, Rathong, Koktang, Pandim, Sinlolchu and Kumbhakaran. Apart from these the lofty mountain peaks, prettiness of this hill-town lies in its verdant green alpine and Rhododendron forests that are flawless for nature trails. The area is also a dwelling for some of the rarest genus of Himalayan animals. Kanchendzonga National Park in this part of Sikkim provides a natural habitation to them. Amidst all the greenery, lies some beautifully cascading waterfalls, which are counted amongst the wonderful natural spots to re-energize with family and friends.

The drive from Darjeeling to Pelling is likely to take around 1 hour and 55 mins. Shortly after reach the hill-town, make a check-in to a reserved hotel for a cozy overnight stay. The remaining hours would be at leisure. You can choose to unwind yourself in your suites or head out for a shopping in the nearby market places.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Pelling local sightseeing
								</p>
								<p class="aj">Fourth day of our elite tour is dedicated to seeing the sights in and around Pelling. What else can be better than remembering the Lord to kickstart the day. Owing to this, you will be heading to Pemayangtse monastery at the first place.

About 2km from the main town of Pelling, lies the prime monastery of Ngingma sect, Pemayangtse Monastery. This Buddhist sacred center is believed to be erected in the year 1705, by Gyalwa Lhatsun Namkha Jigme. The celebrated monastery is like the sanctum of all the other Nyingma monasteries and assumed to uphold the order of this sect. Being struck by earthquakes twice, the architecture of Pemayangtse monastery underwent several reconstructions.

Presently, the floors of the monastery are adorned with paintings, figurines and ancient scriptures. Besides the paintings and sculptures, you will witness eight manifestations of Padmasambhava, in the form of statuette, which appears highly striking. The center of attraction remains the prime figure of Padmasambhava, which represents Tantric form of Buddhism. As you would be done with the monastery, hop on for a nature trip to spots like Kecheoplari lake, Rimbi waterfalls, Rimbi rock garden and Kanchenjunga falls.

Located 27 km from the town of Pelling, Khecheoplari lake is amongst the most pristine lakes of Sikkim. Journey to the sacred lake would take you right across a thick forest cover. The lake is beautiful, placid and clean to explore.

Just a km ahead, at a sharp curve on the road side, lies the beguiling Kanchenjunga falls. Owing to its charm and magnificence, the waterfalls are amongst the key attractions in Darjeeling. The waterfall is perennial and it gets its spring from colossal glaciers high up in the mountains. There are also several shops and stalls located in the vicinity of the falls. You can sip a nice cup of coffee amidst the intriguing milieu of the Kanchenjunga falls.

Rimbi Rock Garden or Sewaro Rock Garden is a lure of gardens, pools and zigzag foot paths. Located around 12 km from the main town of Pelling, the rock garden is a flawless place to relish a picnic. As you move 5 km from here, you will come face to face with Rimbi waterfalls, which is awe-inspiring to every eyeball.

Soon after completing the jaunt, return to your hotel for a slackening stay. Feel free to explore the local markets of Pelling after sundown.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Transfer from Pelling and Gangtok Local Sightseeing
								</p>
								<p class="aj">Munch your breakfast, embark on an expedition to the capital of Sikkim, Gangtok. The capital is around 116 km from Pelling, so you will have to depart in the early hours.

Gangtok being one of the celebrated places in Sikkim, is a chief tourist destination that is flaked with multiple beautiful monasteries, and rests under the shroud of lofty Himalayan peaks. Most intriguing fact about Sikkim is that due to its proximity to Himalayan ranges, the destination offers a panoramic view of the colossal Kanchenjunga mountain, which is the highest in Sikkim. Apart from the captivating Himalayan beauty, Gangtok is enriched with cultural biodiversity flowing deep inside its city life.

Drive to Gangtok for nearly 2 hr and 30 mins. Soon after you reach your destination, you would be escorted to your guesthouse. After unwinding for a while in the guesthouse, you will be heading for a tourism trip of Gangtok. Prime tourist attractions that you would be visiting include Enchey monastery, Do Drul Chorten, Directorate of handicrafts and handlooms, Research institute of Tibetology and White Hall.

Located 3 km from the main town of Gangtok, Enchey Monastery is regarded as the principal sacred site in the city. Construction of this legendary monastery dates back to 200 years. Another chief paradigm of the Nyingma sect of Buddhism, Enchey monastery is supposed to be sanctified by Lama Druptab Karpo. In its early days, Enchey was basically a small hut. Later on, the present day architecture started taking place in the form of a Chinese Pagoda. The prime attractions of this lone monastery are the figurines of Lord Buddha, Loki Sharia and Guru Padmasambhava. Besides the sculpture of them, the monastery also houses primitive images of Gods and Goddesses.

Noticeable by a golden top dome, Do Drul Chorten stupa stands on a hillock. The construction of this spectacular structure has an interesting tale to narrate. It is said that once the spot of this very stupa, used to be haunted by ghouls, and caused human casualties. In order to mitigate the region of these malevolent spirits, a noted lama of Tibet, Trulshig Rinpoche arrived to this place and erected a religious stupa in the year 1946. This stupa later on was known as Do Drul Chorten. Structured along the principles of Nyingma order of Buddhism, the stupa holds great connotation. It houses 108 prayer wheels that have Buddhist hymns emblazoned over them.

After praying at these sacred sites, head towards the Research Institue of Tibetology, which is located very close to Do Drul Chorten stupa. The institute is well-known for its huge assortment of books on the traditions of Sikkim and Tibetan work. Post this, embark to Directorate of Handlooms and Handicrafts and White Hall. Then call it a day, and proceed back to your inn and retire for the night. In the evening, visit any good shopping market or a club nearby.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Excursion to Tsomgo Lake and Baba Mandir
								</p>
								<p class="aj">Munch a finger-licking breakfast, leave for Tsomgo Lake and Baba Mandir on the alluring heights of Sikkim. First in the outing is Tsomgo Lake which is around 39 km from Gangtok. Drive to the lake is likely to take around an hour.

Perching at an altitude of around 12,400 ft, Tsomgo Lake or Changu Lake is one of the most serene spots in the whole of Sikkim. The glacial lake is a dwelling to a number of Brahmini ducks and migratory birds. Besides its natural charm, Tsomgo lake is also a revered lake that is highly thronged by Buddhist and Hindu pilgrims. On the banks of the Tsomgo Lake lies a shrine of Lord Shiva as well. The lake also has shops selling yak cheese and trinkets, situated on its banks. After having a gala time in this natural magnificence, move towards an outstanding shrine, known as Baba Mandir.

Baba Harbhajan Singh Memorial temple or simply Baba Mandir is a holy place that stands close to the Jelep La and Nathu La in the eastern part of Sikkim. The drive is around 16 km from Tsomgo Lake, which is likely to take close to 21 mins to reach. The famous shrine of Baba Harbhajan Singh has an intriguing story to narrate. The story goes like this, there was a sepoy in the 23rd Punjab Regiment who was martyred during the Indo-China war of 1962. One of his fellow soldiers saw him in his dream, asking to commemorate a memorial in his honor. This resulted in the erection of a cenotaph by the great Indian army. This later on turned into a religious shrine. Owing to this, the shrine welcomes hundreds of devotees on a daily basis. As you will enter the temple of Baba Harbhajan Singh Memorial Temple, you will come across an assortment of possessions of the late soldier and an idol of him. This temple is highly revered by army personnels posted in the region.

By sundown, you would return to your hotel in Gangtok for an overnight stay. Make the best use of final hours of your shopping in the urban at this time.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Departure from Gangtok
								</p>
								<p class="aj">Shortly after eating morning breakfast, you would be transferred to New Jalpaiguri Railway Station (119 km) / Bagdogra Airport (126 km) / Tenzing Norgay Bus Stand (113 km) from your hotel in Gangtok. This marks the farewell of our remarkable northeast holiday.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delightful North East with Pelling Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="85249"/>
						</form>
						</div>
						
						";i:1;s:78:"Book Delightful North East with Pelling Tour - 6 Nights / 7 Days Tour Packages";i:2;s:202:"book delightful north east with pelling tour - 6 nights / 7 days tour packages, hill stations & valleys tour packages, darjeeling, pelling, gangtok, pemayangtse monastery, enchey monastery tour packages";i:3;s:232:"RAJAS TRAVELS offers Delightful North East with Pelling Tour - 6 Nights / 7 Days tour package, budget Hill Stations & Valleys tour packages for Darjeeling, Pelling, Gangtok, Pemayangtse Monastery, Enchey Monastery at exciting price.";i:4;s:480:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Darjeeling, Pelling, Gangtok, Pemayangtse Monastery, Enchey Monastery"        
		                 },
		      "description": "",
		      "name": "Delightful North East with Pelling Tour",
		      "telephone": "+91-9820123553"
		    }
		    </script>
			";i:5;N;}