a:6:{i:0;s:11092:"				<div class="h1"><h1>Kashmir  Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.hifiholidays.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.hifiholidays.com/travel-packages.htm" title="Travel Packages">Travel Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Kashmir  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">
						3 Nights / 4 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Srinagar, Anantnag, Baramulla</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </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.hifiholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kashmir  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="108385"/>
						</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_14/411823/179397.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/411823/179397.jpg"  height="150"  width="150"    alt="Kashmir  Tour" title="Kashmir  Tour" /></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 Srinagar
								</p>
								<p class="aj">Arrive at the Srinagar Airport where you’ll meet our tour agent. He will assist you with an assisted transfer to Houseboat. Complete the check-in formalities and savor the welcome drink. After settling-in, begin the city jaunt of Srinagar. The catalog of attractions includes gardens of Srinagar- Mughal Gardens, Chashmi-e Shahi (The Royal Spring), Nishat Bagh (The Garden of delight) Shalimar Bagh (Abode of love).

Mughal Gardens – a well-maintained cluster of garden built in Charbaugh arrangement in Persian style, much-loved by the Mughal rulers. It features canals, fountains and pools. This garden was established by Emperor Babur and has contributions from his predecessors like Jehangir and Shah Jahan. Visited by tourists enormously, Mughal Garden is one of the renowned attractions in Kashmir. The garden is a grouping of three major gardens- namely the Nishat Bagh, Chashm-e-shahi and Shalimar Bagh. Nishat Bagh is a terraced Mughal garden that is the second prevalent Mughal garden in Kashmir. Resting on the eastern side of the Dal Lake, this garden has 12 terrace levels, with old chinars, rows of flowers and water channels with fountains. Shalimar Bagh was commissioned in 1619 by Mughal Emperor Jahangir for his spouse, Nur Jahanand, is a well-known as the highlight of Mughal horticulture. Chashm-e-shahi is the smallest of the 3 gardens here nut is a pre-eminent for its Royal Spring. There is a shelter space around the spring that is, to a certain extent, rich in iron and minerals.

The sundown is scheduled for a tremendous Shikara Ride in the notable Dal Lake. An activity not to be missed when in Srinagar, Shikara ride takes you to the length and breadth of the lake. Shikara is a small narrow boat that lets you cruise on the serene azure blue waters of the lake. There are floating markets selling Kashmiri specialties like dry fruits, woolen and Pashmina shawls. There various other Shikaras selling different knick-knacks, ice creams, fruits and vegetables. While cruising, don the local attire do and click beautiful photographs. There are even bigger Shikaras selling eatables like pakoras, Maggie and more.

Savor a delicious meal and stay overnight in the pre-booked lodge.</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> Srinagar - Gulmarg - Srinagar
								</p>
								<p class="aj">Shortly, after munching breakfast, the day is scheduled for a trip to Gulmarg, a place that boasts of pristine charm in abundance. The place looks like heaven nestled amidst sky-kissing mountains and shrouded under a sheet of verdant milieu and colorful flowers. A visit to Gulmarg will surely be invigorating and memorable. It has been a vacation inn from the days of the British. The road from Srinagar to Gulmarg is adorned with charming white and purple flowers. Enjoy the scenery.

Shortly after reaching Gulmarg, get set to unwind the place and witness its attractions. The hill-town houses Asia’s highest and longest cable car project, the Gulmarg Gondola, the renowned thing to do here. This is two-level ropeway Cable car that carries around 600 people per hour, to and from Kongdoori massif, nearby Afarwat Peak (13,780 ft). Once you reach the top, give a visual retreat to your eyes to the alluring sights of the snow-capped Himalayas. You can also participate in hiking and horse riding to wander around the place. If you are visiting Gulmarg between December and April, take delight in Skiing as Gulmarg is one of the world’s outstanding skiing destinations. Try your hand at golfing at the highest golf course in the world with 18 holes.

Return to Srinagar by sundown. Overnight stay in the resort.</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> Srinagar - Pahalgam - Srinagar
								</p>
								<p class="aj">Shortly, after munching breakfast, leave the hotel for a daylight expedition of Pahalgam or the Valley of Shepherds. E- Route Pahalgam and halt to visit the Saffron fields. Pampore is the place in Kashmir that has been producing Saffron from past 2500 years. Kashmiri Saffron is counted among the best quality. You can click pictures here to save them as memoirs. Get awe-struck by nature’s charming views.

Later, carry on towards Pahalgam, a mesmerizing hill-town of Kashmir, covered with profuse greenery. Resting on the banks of Lidder River, Pahalgam is a much loved spot for the shooting of Bollywood movies and magnetizes an extreme number of tourists. On arrival, travel around the admired tourist attractions of Pahalgam. If you are an adventure buff, try your hand in River Lidder. Hop onto a horse’s back to explore the place. You can shop for some amazing local stuff from the bazaar of Pahalgam.

Visit Avantipura remnants, remains of ancient Hindu shrines that were established by King Awanti Varman who reigned over the region during the 9th century. The ruins have temples, enshrining Lord Shiva and Lord Vishnu. The location is surrounded by verdant greenery and offers mental peace. The subsequent attraction is Anantnag Sulphur Springs, 2 in number. The water of these springs is un-faded. Spend some unforgettable with your loved ones here.

After sundown, back to Srinagar. Stay overnight.</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> Departure from Srinagar
								</p>
								<p class="aj">After morning supper, on the final day of the trip, you have some leisure time at hand till departure. Indulge in the activities of your curiosity. Afterwards, get a timely transfer to Srinagar airport to board the flight for your next destination.</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>
															</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.hifiholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kashmir  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="108385"/>
						</form>
						</div>
						
						";i:1;s:52:"Book Kashmir  Tour - 3 Nights / 4 Days Tour Packages";i:2;s:125:"book kashmir  tour - 3 nights / 4 days tour packages, hill station tour packages, srinagar, anantnag, baramulla tour packages";i:3;s:185:"Book Kashmir  Tour - 3 Nights / 4 Days tour packages from Hifi Tour & Travel  Holidays - Get attractive 3 Nights / 4 Days Hill Station  tour packages for  Srinagar, Anantnag, Baramulla.";i:4;s:414:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Srinagar, Anantnag, Baramulla"        
		                 },
		      "description": "",
		      "name": "Kashmir  Tour",
		      "telephone": "+91-9890797744"
		    }
		    </script>
			";i:5;N;}